SQL : différences entre LEFT JOIN, RIGHT JOIN, etc

J’ai toujours eu quelques diffuculté a bien visualisé les différence qu’il y avait entre left join, right join, join, etc lorsque je fait des requêtes SQL. Aujourd’hui je suis tombé sur un exemple frappant, et je me suis dit que cela pouvait en aider plus d’un! Comme une image vaux mieux qu’un long discours, en voici l’essence.

L’exemple suivant se base sur une base de donnée mysql :

CREATE TABLE IF NOT EXISTS `acl_roles` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) CHARACTER SET utf8 NOT NULL,
`build_on` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `build_on` (`build_on`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

INSERT INTO `acl_roles` (`id`, `name`, `build_on`) VALUES
(1, 'guest', NULL),
(2, 'normal', 1),
(3, 'modo', 2),
(4, 'admin', 3);

ALTER TABLE `acl_roles` ADD CONSTRAINT FOREIGN KEY (`build_on`) REFERENCES `acl_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

Nous avons donc une table avec des clefs de référence pour marquer les dépendance entre les roles. En images cela donne ceci :

id name build_on
1 guest NULL
2 normal 1
3 modo 2
4 admin 3

Maintenant regardons le résultats de divers SELECT, le résultat parle de lui-même.

SELECT ar.*, arp.name AS parent_name FROM acl_roles ar, acl_roles arp WHERE arp.id = ar.build_on

id name build_on parent_name
2 normal 1 guest
3 modo 2 normal
4 admin 3 modo

SELECT ar.*, arp.name AS parent_name FROM acl_roles ar LEFT JOIN acl_roles arp ON arp.id = ar.build_on

id name build_on parent_name
1 guest NULL NULL
2 normal 1 guest
3 modo 2 normal
4 admin 3 modo

SELECT ar.*, arp.name AS parent_name FROM acl_roles ar JOIN acl_roles arp ON arp.id = ar.build_on

id name build_on parent_name
2 normal 1 guest
3 modo 2 normal
4 admin 3 modo

SELECT ar.*, arp.name AS parent_name FROM acl_roles ar RIGHT JOIN acl_roles arp ON arp.id = ar.build_on

id name build_on parent_name
2 normal 1 guest
3 modo 2 normal
4 admin 3 modo
NULL NULL NULL admin

J’espère que l’exemple servira a certain et que cela en aidera plus d’un!

FSB RC est sortie!

Je vous le disait il y a peu, la nouvelle RC de FSB 2 allait sortir.

C’est chose faites !

Les principales nouveauté sont les suivantes :

  • Chiffrement RSA pour les identifiant
  • FSBCard (idée dont je suis fier) qui permet l’export de son profil ainsi que de ses préférences
  • Un mode bas débit du forum
  • L’option d’installation rapide, génial pour les développeurs!
  • Plein de fix
  • Possibilité de mettre des sondage dans les map des message, pour rappel les maps des messages étant une présentation d’un nouveau sujet||message à posté
  • Refonte complète du système de procédure modératives

Bref on sent que la version final approche et surtout que FSB2 à un grand avenir devant lui!

Mon seul regret : le thème que je trouve bof bof

L’annonce officiel

ExperienceLibre : Fire Soft Board

Suite à mon billet précédent je vous présente le logiciel libre fire soft board ou simplement FSB.

Késako?

FSB, est un forum programmée en PHP et disponible en deux version. De plsu, il est possible d’ajouter une multitude de mods et de thèmes.

La version 1 est un forum basique et léger, fonctionnant, pur ainsi dire, que avec mysql.
La version 2 est assez léger mais comporte énormément d’options, multi-langue, multi base de données.

Ma découverte

Mon histoire avec FSB, commence à ces débuts, lorsque il était encore en cours d’élaboration. En fait, à l’époque j’utilisai PHPBB que je trouvait intéressant et empli de mods. Avec d’autre j’ai participé à la création d’une communauté belge phpbb-be, disparue aujourd’hui et je voulait créer d’autre projet afin d’aider les gens à programmer des mods et autres via phpbb.

Cependant, plus je m’intéressait, plus je trouvait que phpbb était brouillon et peu modifiable. Je me suis dit il doit bien exister autre chose! Et puis l’idée faisant son chemin, et trainant sur le forum portail-maker (aujourd’hui disparu) que dirigeait le créateur de FSB, j’ai très rapidement accroché à l’idée du nouveau forum qu’était FSB. Certes, la version 1 n’était pas l’idéal que je m’était fixé, cependant elle permettait d’être facilement modifié (vu le peu d’option dispo) et disposait de commentaire en français (ce qui à l’époque, était un problème pour moi).

Ma participation

Depuis la première beta, j’ai participer à la découverte de bug et à leur correction. J’ai donnée pas mal d’idée que se soit de mods ou de fonctionnalité. Mais j’en ai surtout fait la promotion. Pour moi, ce forum était génial dans le sens où il était nettement plus sûr que PHPBB (de part le peu de présence de FSB sur la toile et de part sa conception).

Depuis quelque temps, je suis aussi modérateurs et responsables validations des mods et rédacteurs du wiki (wiki, qui après insistance fut enfin installé!) de FSB.

J’ai aussi créer diverse prémods, mods et aide au modeurs pour FSB 1.*.*. Bref j’ai participé et participe encore a ce projet.

Mon utilisation

Pour ce qui est de l’utilisation du logiciel, je doit dire que j’ai quatre site sur lequel je l’utilise, 2 en version 1 et 2 en version 2! Je ne suis que peu déçus par FSB, même si je regrette l’absence d’une api de programmation!

Statut actuelle du logiciel

Actuellement, FSB va bientôt sortir sa version 2 qui apporte au moins deux nouveautés unique (à ma connaissance):

  • Des procédures modératives
  • Des FSBCard, un système permettant d’exporter/importer son profil utilisateur dans un autre forum (idée dont je en suis pas peu fière)!

Bien entendu cela ne se limite pas à cela.

A noter que FSB recherche des graphistes pour le projet!

Site

Je vous invite à en découvrir plus sur le site officiel est http://www.fire-soft-board.com, en français (qui à l’heure où je parle est en transformation).

Fire Soft Board v2 RC5 presque disponible!

Fire Soft Board ou FSB sortira prochainement la rc5 de sa version 2

FSB est un forum, un forum qui a au moins deux choses d’unique :

  • FSBcard : un système de carte de profil, permettant à l’inscription de directement remplir son profil avec ses préférences! (à partir de la rc5)
  • Procédure modérative : des mini scripts permettant d’effectuer plusieurs action de modérations l’une à la suite de l’autre

En dehors de cela FSB est un forum utilisant des technologies moderne: AJAX, PHP5, POO, XHTML, CSS, … mysql, postgresql, et autre et respectant les standards!

De plus, d’ici la version 2.0.0 un sdk externe devrait sortir, afin de fournir diverse méthode pour interconnecter un site et son forum.

Il est l’un des forum les mieux conçu tant du point de vue code que ergonomique, que je connaissent.

Le site : http://www.fire-soft-board.com

MyWsp : du nouveau?

Comme certains m’ont posée la question, j’y réponds.

Oui MyWsp avance, lentement mais surement.

La dernière nouveauté visible est le logo (temporaire à définitif), visible sur le site officiel et logo2 .

Cependant ce n’est aps tout, j’ai définit presque entièrement ce que j’appelle le package de base, c’est-à-dire, un truc que l’on ne sais pas utilisé tout seul, mais indispensable au fonctionnement de tout le reste! En gros le package de base comprendra :

  • RSS
  • outils de sécurités tel : antispam, antiflood, …
  • système de session basic
  • mail simple
  • système de cache
  • gestion de base de données
  • bbcode, html et autre système d’écriture (avec possibilité de plugins pour oa7code, textile, wiki, wikini, wiki+, …)
  • peut-être un système de tpl mais je verrais à la longue!
  • système d’erreur très simple donc sans log
  • upload simple
  • quelques surfonction, genre date avec strftime, et d’autres truc utiles …
  • système de gestion des modules
  • Administration

Avec cela les modules principaux verront rapidement le jour. Cependant, le gros point noir reste la gestion des modules (qui n’est pas programmer du tout, le reste est surtout une question de retouche). En effet, j’ignore encore comment je vais faire fonctionner le tout de manière optimale, que se soit pour un ou 250 modules…

Pour les questions, les idées n’hésité pas à répondre en commentaires ou à me contacter!