2012-11-16 7 views
0

Je ne sais pas si ce sont des "requêtes complexes" par defn, mais elles ont l'air très complexes pour un noob comme moi.Combiner 2 requêtes SQL "complexes"

J'ai donc une requête ici qui obtenir le dernier tableau de customer_id = 5:

$query = "SELECT c.Chart_ID, c.Chart_Notes 
      FROM tblchart AS c WHERE c.Customer_ID=5 
      ORDER BY c.Last_Edited ASC LIMIT 1"; 

Mais je dois relier à une autre table qui utilise la Chart_ID comme clé étrangère. Comment puis-je obtenir les données du tblcontent en utilisant tblchart.Chart_ID=tblcontent.Chart_ID? Je ne pouvais pas simplement ajouter que:

$query = "SELECT c.Chart_ID, c.Chart_Notes, d.Content_Desc, d.Content_Title 
      FROM tblchart AS c, tblcontent AS d 
      WHERE c.Customer_ID=5 AND c.Chart_ID=d.Chart_ID 
      ORDER BY c.Last_Edited DESC LIMIT 1"; 

puis-je? Comme cela limiterait la recherche à un seul ... l'utilisation de LIMIT 1 est juste pour obtenir la dernière, mais pour la requête suivante (requête étendue), j'attends plusieurs résultats extraits de tblcontent en plus de la première requête que j'ai postée. Une jointure, peut-être, ou une union, ou une requête complexe, mais comment? S'il vous plaît, quelqu'un peut-il m'aider? Merci.

+0

quoi de mal à utiliser la deuxième requête sans utiliser de limite? il inclura également le résultat obtenu lors de la première requête. De même, si le champ de date 'c.Last_Edited', pour obtenir la dernière entrée, vous devez 'ORDER IT BY DESCENDING ORDER using DESC'. – WatsMyName

+0

Oh oui, j'ai oublié de le changer lors des tests. C'est censé être DESC. Et ... ce ne serait pas montrer tous les tableaux (juste disposés dans l'ordre décroissant)? Je veux juste voir le dernier tableau avec ses tblcontents ligotés. Merci d'ailleurs. – Fred

Répondre

1
SELECT a.Chart_ID, a.Chart_Notes, c.Content_Desc, c.Content_Title 
FROM tblChart a 
     INNER JOIN 
     (
      SELECT Chart_ID, MAX(Last_edited) maxEdited 
      FROM tblChart 
      GROUP BY Chart_ID 
     ) b ON a.Chart_ID = b.Chart_ID AND 
       a.Last_Edited = b.maxEdited 
     INNER JOIN tblcontent c 
      ON a.Chart_ID = c.Chart_ID 
WHERE a.Customer_ID=5