Jump to content



MySQL sur deux tables... help! :(


5 replies to this topic

#1 nka

    Geek God

  • [QiT] Admins
  • PipPipPipPipPipPipPipPipPipPip
  • 12,054 posts
  • LocationQuebec, Canada

Posted 03 February 2012 - 10:51 PM

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.

#2 nka

    Geek God

  • [QiT] Admins
  • PipPipPipPipPipPipPipPipPipPip
  • 12,054 posts
  • LocationQuebec, Canada

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]");

Edited by nka, 03 February 2012 - 11:07 PM.


#3 Seb

    [QiT] Moderateur

  • [QiT] Gestionaires
  • PipPipPipPipPip
  • 260 posts

Posted 04 February 2012 - 08:55 AM

Bon garçon, tu as retenu la leçon :P

#4 nka

    Geek God

  • [QiT] Admins
  • PipPipPipPipPipPipPipPipPipPip
  • 12,054 posts
  • LocationQuebec, Canada

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! :D

#5 Radical Colt

    Geek

  • Members
  • PipPipPipPipPipPipPip
  • 1,015 posts
  • LocationLaval

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.

Edited by Radical Colt, 14 February 2012 - 08:31 AM.

Keep Going !

#6 nka

    Geek God

  • [QiT] Admins
  • PipPipPipPipPipPipPipPipPipPip
  • 12,054 posts
  • LocationQuebec, Canada

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! :)





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users