problème de jointure dans ma requette

problème de jointure dans ma requette - SQL/NoSQL - Programmation

Marsh Posté le 06-07-2009 à 16:38:17    

Bonjours,
 
je voudrai faire une requete mysql mais j'arrive pas.
 
Ma requete doit me fournir un champs qui ce trouve sur la table olo mais d'abord je dois voir sur la table commande pour ma clause where
 
car je veu afficher par ordre décroissant les dates a lequel il y a eu la première commande et regroupé par commandes_type
 
quand j'ai fait comme sa:

Code :
  1. SELECT *  FROM `commandes` WHERE `commandes_type` LIKE '%olo%' group by commandes_type order by  commandes_date desc


 
sa me remet le résultat voulut mais quant je fais ma jointure pour avoir ma olo_type sa tourne et tourne juska demain
 
sachant que commandes_type est égale à olo_type
 
exemple j'ai dans ma table commandes air_force_olo et air_one
mais dans ma table commandes j'ai que ce qui finit ou commence par olo donc on va retouvé air_force_olo
 
je vous montre ma requete qui tourne encore a chaque modification
 

Code :
  1. SELECT e.olo_campaign  FROM commandes c, olo e
  2.  WHERE c.customers_id=e.customers_id and c.commandes_type=e.olo_campaign 
  3.  group by c.commandes_type order by c.commandes_date desc


 
j'espère que vous avez compris mon problème si quelqu'un peu m'aider pour cette requete ce serai gentile car j'esseil depuis 1h et là comme je trouve rien je vous demande votre avis merci

Reply

Marsh Posté le 06-07-2009 à 16:38:17   

Reply

Marsh Posté le 06-07-2009 à 16:50:29    

Par pitié, arretez de faire des jointures avec WHERE, je vais finir par distribuer des baffes [:prozac]
 
1. Les jointures, c'est avec (LEFT|RIGHT|INNER) JOIN, pas avec WHERE, qui est une syntaxe dépassée et archi dépassée qui date de 1986
 
2. le GROUP BY ne sert à rien vu que tu n'utilises aucune fonction d'aggrégation
 
3. tu dis que commandes_type est égal à olo_type, et dans ton filtre, tu écris "AND c.commandes_type = e.olo_campaign"
 
Donc, réécris ta requête comme ceci :

Code :
  1. SELECT e.olo_campaign
  2. FROM commandes c INNER JOIN olo e ON c.customers_id = e.customers_id AND c.commandes_type = e.olo_type
  3. ORDER BY c.commandes_date DESC


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 06-07-2009 à 17:00:56    

Merci mais je sais pas pourquoi sa continue de tourné depuis 5 minute donc il doit y avoir une erreur??


Message édité par sinifer le 06-07-2009 à 17:01:17
Reply

Marsh Posté le 06-07-2009 à 17:04:42    

Syntaxiquement, la requête que je t'ai donnée est correcte. Après, si elle tourne dans le vide ou ne donne pas le résultat escompté, ça vient du fait qu'elle n'est pas adaptée à la structure de ta base.
Peux tu poster la structure des tables commandes et olo stp ? (champs, types de données, clés primaires et étrangères)


Message édité par Harkonnen le 06-07-2009 à 17:05:00

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-07-2009 à 08:13:55    

ma structure est la suivante:
 
table commandes:
 
commandes_id  commandes_date  customers_id  commandes_relance  commandes_montant  commandes_type  commandes_status
 
 
tables olo :
 
olo_id  customers_id  olo_keycode  olo_type  olo_status  olo_date
 
et dans olo_type et commandes_type il y a pratiquement les mêmes nom sauf que dans commandes_type il y a pas toujours des olo
 
ex: air_force_olo et air_one mais dans olo il y aura air_force_olo mais pas air_one

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed