Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1721 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Ajouter des col. à un résultat si une condition est satisfaite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Ajouter des col. à un résultat si une condition est satisfaite

n°1733182
igarimasho
Posté le 17-05-2008 à 22:40:51  profilanswer
 

J'ai 3 tables:  
orders (id, user_id, total, paid)
items (order_id, product_id, quantity)
products (id, description)
 
Mon but est de d'afficher un produit, ainsi que les commandes auquel il appartient. Et s'il ne fait partie d'aucune commande, et bien je veux quand même voir ses données.
 
Pour le moment je fais ça avec 2 requêtes: une qui fait un simple SELECT sur products avec WHERE id=id_du_produit. Et une seconde qui détermine si le produit appartient à une commande qui a été payée.
 
J'essaye de la réduire en seule requête, donc j'ai essayé avec LEFT JOIN qui marche bien, mais dès que je mets un WHERE orders.paid = 1, si le produit n'appartient à aucune commande payée, le résultat est un tableau vide. Or moi je veux qu'au minimum les colonnes du produit soient renvoyées, et si le produit appartient à au moins une commande payée, et bien les colonnes de ces commands soient jointes au résultat.
 
Est-ce que je cherche à faire est possible ou bien je dois rester avec mes 2 requêtes?

mood
Publicité
Posté le 17-05-2008 à 22:40:51  profilanswer
 

n°1733236
Profil sup​primé
Posté le 18-05-2008 à 01:48:52  answer
 

Salut !
 
place ton orders.paid dans ta jointure externe et non dans le where qui lui s'applique sur l'ensemble des résultat SUITE aux jointures)
 
ce qui ressemblerait vaguement à :
 
 

SELECT p.id,p.description,o.id,....
FROM products p
LEFT JOIN items i ON (p.product_id=i.product_id)
LEFT JOIN orders o ON (i.order_id=o.id AND o.paid=1)


Message édité par Profil supprimé le 18-05-2008 à 01:50:14
n°1733312
igarimasho
Posté le 18-05-2008 à 12:36:55  profilanswer
 

Merci spike, je suis en train de tester, j'ai un petit souci car même si la commande est payée, order_id reste vide, je vais d'où ça peut venir.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Ajouter des col. à un résultat si une condition est satisfaite

 

Sujets relatifs
MySQL / PostgreSQL[Mysql] Outils d'edition de schémas
[PHP-Mysql]Formulaire Login + bdd sous mysqlSQL Server : Ajouter une vue issue d'une autre BDD
[MySQL] Dupliquer une colonne[MySQL] condition sur un alias
[Java - Mysql] JComboBox imbriquées - données venant de Bd accessTable Mysql crashée
Changement de password de Mysql . . . 
Plus de sujets relatifs à : [MySQL] Ajouter des col. à un résultat si une condition est satisfaite


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR