J'ai un produit dans une table et le prix dans un autre table, comment j'tire les deux en meme temps?
$query = mysql_query("select * FROM tblproducts WHERE id=$ProdNum[0] OR id=$ProdNum[1] OR id=$ProdNum[2]");
Le pricing est dans la table "tblpricing" et le "id" match.
MySQL sur deux tables... help! :(
Started by nka, Feb 03 2012 10:51 PM
5 replies to this topic
#2
Posted 03 February 2012 - 11:07 PM
Ah... je l'ai!
http://en.wikipedia.org/wiki/Join_(SQL
$query = mysql_query("SELECT * FROM tblproducts INNER JOIN tblpricing ON tblproducts.id = tblpricing.id WHERE tblproducts.id=$ProdNum[0] OR tblproducts.id=$ProdNum[1] OR tblproducts.id=$ProdNum[2]");
http://en.wikipedia.org/wiki/Join_(SQL
$query = mysql_query("SELECT * FROM tblproducts INNER JOIN tblpricing ON tblproducts.id = tblpricing.id WHERE tblproducts.id=$ProdNum[0] OR tblproducts.id=$ProdNum[1] OR tblproducts.id=$ProdNum[2]");
Edited by nka, 03 February 2012 - 11:07 PM.
#3
Posted 04 February 2012 - 08:55 AM
Bon garçon, tu as retenu la leçon
#4
Posted 04 February 2012 - 11:19 AM
ouin, j'me rapellais pas completement ce que tu m'avais apris, mais ca ma quand meme permis de chercher et de me souvenir!
#5
Posted 14 February 2012 - 08:30 AM
Pourquoi as-tu 3x cette même condition dans ta requête SQL ? Tu veux pouvoir rechercher jusqu'à 3 ID de produits en même temps ?
WHERE tblproducts.id=$ProdNum[0]
OR tblproducts.id=$ProdNum[1]
OR tblproducts.id=$ProdNum[2]
Ma Suggestion :
WHERE tblproducts.id in ( 1, 3, 10 )
Avantage : si plus tard tu veux ajouter une autre ligne de condition, cela se fait "as is" (exemple " AND tblproducts.Expiration = false" )
Désavantage : c'est plus compliqué de programmer une "logique" qui concatène les nombres entre parenthèses. ==> tblproducts.id in ( 1, 3, 10, 12, 13, etc... )
---------------------------------------------------------
Note : N'oublie pas qu'avec un "INNER JOIN" si ton prix n'existe pas dans "tblproducts", ton produit ne s'affichera pas du tout dans ton résultat (liste de produit, prix). Mais si tu utilies un "LEFT JOIN" il va apparaitre avec un prix vide (null), mais les performances d'un "LEFT JOIN" sont moins bonnes qu'un INNER JOIN.
Mon conseil "over all" : il est plus facile de traiter l'exception ( prix à null) que de chercher pourquoi la liste de produits ne balance pas.
WHERE tblproducts.id=$ProdNum[0]
OR tblproducts.id=$ProdNum[1]
OR tblproducts.id=$ProdNum[2]
Ma Suggestion :
WHERE tblproducts.id in ( 1, 3, 10 )
Avantage : si plus tard tu veux ajouter une autre ligne de condition, cela se fait "as is" (exemple " AND tblproducts.Expiration = false" )
Désavantage : c'est plus compliqué de programmer une "logique" qui concatène les nombres entre parenthèses. ==> tblproducts.id in ( 1, 3, 10, 12, 13, etc... )
---------------------------------------------------------
Note : N'oublie pas qu'avec un "INNER JOIN" si ton prix n'existe pas dans "tblproducts", ton produit ne s'affichera pas du tout dans ton résultat (liste de produit, prix). Mais si tu utilies un "LEFT JOIN" il va apparaitre avec un prix vide (null), mais les performances d'un "LEFT JOIN" sont moins bonnes qu'un INNER JOIN.
Mon conseil "over all" : il est plus facile de traiter l'exception ( prix à null) que de chercher pourquoi la liste de produits ne balance pas.
Edited by Radical Colt, 14 February 2012 - 08:31 AM.
Keep Going !
#6
Posted 14 February 2012 - 09:06 AM
J'ai effectivement besoin seulement 3 ID specifique en meme temps! J'aime bien les paranthèses, ca fait plus "clean".
Merci de l'explication du INNER et LEFT, je l'ai melange souvent. Anyway, s'il n'a pas de prix, c'est qu'il n'est pas a vendre ou que je n'ai pas le bon produit!
Merci de l'explication du INNER et LEFT, je l'ai melange souvent. Anyway, s'il n'a pas de prix, c'est qu'il n'est pas a vendre ou que je n'ai pas le bon produit!
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users














