2010-07-27 7 views
1

J'ai deux tables de notation/votes. Un pour les votes et les statistiques des utilisateurs et un autre pour les votes externes. La table des votes externes contient toujours des données car elle contient un DEAFULT = 0, mais les votes des utilisateurs ne contiennent des données que si un utilisateur a voté pour cet ID spécifique.PHP/SQL: en utilisant une seule requête, SELECT lignes de deux tables si les données sont dans les deux tables, ou simplement SELECT à partir d'une table sinon

donc je fais quelque chose comme ceci:

$sql = 'SELECT ratings_stats.votes, ratings_stats.total_value, 
        ratings_stats.view, ratings_stats.fav, ratings_stats.wish, 
        ratings_external.votes, ratings_external.total_value 
      FROM ratings_stats, ratings_external 
      WHERE ratings_stats.imdbID = ? 
      AND ratings_stats.imdbID = ratings_external.imdbID 
      LIMIT 1'; 

Je veux sélectionner les données des deux tables si elles sont disponibles ou seulement former la deuxième table (votes externes) sinon.

Comment puis-je le faire sans faire une nouvelle requête?

+2

Semble comme LEFT JOIN. – kennytm

+0

@KennyTM: Comment faire un LEFT JOIN en utilisant les données que j'ai fournies? – Jonathan

Répondre

5
SELECT ratings_stats.votes, 
     ratings_stats.total_value, 
     ratings_stats.view, 
     ratings_stats.fav, 
     ratings_stats.wish, 
     ratings_external.votes, 
     ratings_external.total_value 
FROM ratings_external 
LEFT JOIN ratings_stats ON ratings_stats.imdbID = ratings_external.imdbID 
WHERE ratings_external.imdbID = ? 
LIMIT 1 
+1

+1 pour repérer la condition de jointure correcte :-) J'ai supprimé ma réponse. – Mike

Questions connexes