principe de la jointure

10 messages dans ce sujet

Posté(e) · Signaler ce message

Bonsoir à tous,

J'ai un gros problème de compréhension sur la jointure where.

En effet j'ai vu dans le fichier: search.php la requête suivante :

$SQL = "SELECT DISTINCT(p.id), c.id AS categorie_id, p.nom, p.descriptif, p.image1, p.prix, c.nom AS

categorie FROM rondson_produits p, rondson_produits_categories pc, rondson_categories c WHERE p.id =

pc.produit_id AND pc.categorie_id = c.id AND p.etat = '1' AND p.lang ='".$_SESSION['langue']."' AND";

Je comprend l'intérêt de cette jointure mais pas sa syntaxe, en effet j'écris par exemple :

$sql = "SELECT nomp,nomv FROM terrain t, proprietaire p WHERE p.codeterrain = t.codeterrain ";

avec le nom des champs : codeterrain qui sont similaires et dans ma table terrain et proprietaire.

Là où je ne comprend pas c'est pourquoi ça marche dans peel premium alors que les noms des champs des

tables sont complètement différents ? De plus pourquoi mettre : c.id, p.nom ... après la clause SELECT ?

Encore une fois je souhaiterais que l'on m'explique la syntaxe.

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonsoir à tous,

J'ai un gros problème de compréhension sur la jointure where.

En effet j'ai vu dans le fichier: search.php la requête suivante :

$SQL = "SELECT DISTINCT(p.id), c.id AS categorie_id, p.nom, p.descriptif, p.image1, p.prix, c.nom AS

categorie FROM rondson_produits p, rondson_produits_categories pc, rondson_categories c WHERE p.id =

pc.produit_id AND pc.categorie_id = c.id AND p.etat = '1' AND p.lang ='".$_SESSION['langue']."' AND";

Je comprend l'intérêt de cette jointure mais pas sa syntaxe, en effet j'écris par exemple :

$sql = "SELECT nomp,nomv FROM terrain t, proprietaire p WHERE p.codeterrain = t.codeterrain ";

avec le nom des champs : codeterrain qui sont similaires et dans ma table terrain et proprietaire.

Là où je ne comprend pas c'est pourquoi ça marche dans peel premium alors que les noms des champs des

tables sont complètement différents ? De plus pourquoi mettre : c.id, p.nom ... après la clause SELECT ?

Encore une fois je souhaiterais que l'on m'explique la syntaxe.

Merci

ce qui compte e n'est pas le nom des champs mais les données qui sont srockées dans ces champs.

C'est à dire que ce qui peut etre l'identifiant d'une table peut etre simple champs dans une autre...

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

ce qui compte e n'est pas le nom des champs mais les données qui sont srockées dans ces champs.

C'est à dire que ce qui peut etre l'identifiant d'une table peut etre simple champs dans une autre...

Mais comment expliquer que :

p.id = pc.produit_id en effet moi je dirais plutôt : p.produit_id = pc.produit_id

Mais là je me melle les pinceaux je ne comprend plus.

Et pourquoi mettre : p.id ... après la clause SELECT ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

je vais m'essayer :

la table peel_produits a l' id => id

la table de jointure (intermédiaire) reprend les id produits => produit_id ainsi que les id catégories => categorie_id.

ainsi en regardant dans les tables de ta base tu verras que l'id de peel_produits et produit_id de la table peel_produit_categorie sont identiques.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

je vais m'essayer :

la table peel_produits a l' id => id

la table de jointure (intermédiaire) reprend les id produits => produit_id ainsi que les id catégories => categorie_id.

ainsi en regardant dans les tables de ta base tu verras que l'id de peel_produits et produit_id de la table peel_produit_categorie sont identiques.

Très bien mais je ne savais pas qu'on pouvait donner des noms différents pour les champs dans une

jointure ?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok, donner des noms de champs différents pour la table de jointure peut éviter de s'emméler les pinceaux !

Il y a également : LEFT JOIN par exemple a mettre dans la requête SQL mais de se fait les tables doivent être remaniées.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Ok, donner des noms de champs différents pour la table de jointure peut éviter de s'emméler les pinceaux !

Il y a également : LEFT JOIN par exemple a mettre dans la requête SQL mais de se fait les tables doivent être remaniées.

on peut meme faire une jointure d'une table sur elle même, ce qui s'avere parfois necessaire pour chercher par exemple dans une table employé, à quel employé est subordonné un employé...

Tu suis?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

on peut meme faire une jointure d'une table sur elle même, ce qui s'avere parfois necessaire pour chercher par exemple dans une table employé, à quel employé est subordonné un employé...

Tu suis?

ok merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

en gros si j'ai bien compris et dites moi si je me trompe :

Les champs des tables dans une base de données ne servent qu'a structurer notre esprit.

Tandis que les requêtes SQL avec des clause where par exemple imposent des conditions

qui sont basées sur la valeur de ces champs mais pas leur nom.

De ce fait il est correcte d'écrire :

p.id = pc.id ou encore p.id = pc.produits_id

C'est strictement la même chose vu que l'on raisonne sur des valeures entières.

Ais-je raison ??

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

en gros si j'ai bien compris et dites moi si je me trompe :

Les champs des tables dans une base de données ne servent qu'a structurer notre esprit.

Tandis que les requêtes SQL avec des clause where par exemple imposent des conditions

qui sont basées sur la valeur de ces champs mais pas leur nom.

De ce fait il est correcte d'écrire :

p.id = pc.id ou encore p.id = pc.produits_id

C'est strictement la même chose vu que l'on raisonne sur des valeures entières.

Ais-je raison ??

Merci

presque, c'est vrai que le nom importe peu, et que cela ne sert à rien d'avoir le meme nom pour la meme info dans deux tables (encore plus logique quand on parle de l'identifiant, car il y a l'id catégorie, l'id produit etc...)

Par contre il ne faut pas oublié que ce qui compte c'est les noms donnés aux champs dans les tables.

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping