2010-03-03 5 views
2

Je suis encore nouveau à l'implémentation des jointures dans mon db_design et je ne suis pas sûr si, du tout ce SQL est valide.Est-ce SQL valide?

"SELECT * FROM notes JOIN small_note ON notes_id = '$id' AND authname = '$author' AND bookname = '$book' AND user = '$username'" 

Un peu plus facile à lire comme ceci:

"SELECT * FROM notes 
    JOIN small_note ON notes_id = '$id' 
    AND authname = '$author' 
    AND bookname = '$book' 
    AND user = '$username'"; 
+0

Pouvez-vous montrer la structure de votre DB de ces deux tables? – antyrat

Répondre

0

Je pense que vous devez remplacer votre premier AND avec WHERE.

7

Non, ce n'est pas le cas.

Vous devez spécifier les colonnes de jointure pour les deux tables et vous devez vous assurer que vous utilisez une clause WHERE correcte (qui manque dans votre requête).

Cela peut être plus approprié:

SELECT * FROM notes n 
JOIN small_note sn 
    ON n.notes_id = sn.notes_id 
WHERE notes_id = '$id' 
    AND authname = '$author' 
    AND bookname = '$book' 
    AND user = '$username' 
+0

Vous ne devriez pas non plus utiliser select *, surtout lorsque vous avez une jointure, car cela gaspille des ressources. – HLGEM

0

Non, $ id devrait être le columnname qui détient la référence à l'autre table. Ce n'est pas une variable, c'est un nom de colonne