2014-04-25 2 views
0

j'ai deux tables: questions et réponsesMySQL REJOIGNEZ retour seulement 1 rang sur plusieurs lignes

Il est relationnel, de sorte que les réponses a une colonne appelée question qui correspond directement à la ligne dans la colonne questions. J'ai la question suivante:

SELECT questions.id, 
     questions.question, 
     questions.author, 
     questions.date, 
     answers.answer, 
     answers.user, 
     answers.datetime 
FROM questions 
INNER JOIN answers ON questions.id = answers.question 
WHERE tag IN (:arrayIDs) 

Il y a 3 questions, mais seulement une réponse qui correspond à une question. Cependant, cette chaîne MySQL ne renvoie qu'une question au lieu de toutes les questions.

Comment puis-je récupérer toutes les questions correspondantes (ce qui viendrait si je fais une simple requête SELECT avec une clause WHERE, qui retournerait toujours plus de 1 question) ainsi que la réponse?

Qu'est-ce que je fais mal?

Répondre

2

Essayez ceci, LEFT JOIN vous obtiendrez toutes les questions sans réponse:

SELECT questions.id, 
     questions.question, 
     questions.author, 
     questions.date, 
     answers.answer, 
     answers.user, 
     answers.datetime 
FROM questions 
LEFT JOIN answers ON questions.id = answers.question 
WHERE tag IN (:arrayIDs) 

Jetez un oeil à SQL JOINs

+0

Merci !!!!!!! – DemCodeLines

3

Vous utilisez un INNER JOIN, qui ne vous donnera les enregistrements pour lesquels la L'enregistrement de question peut être joint à un enregistrement de réponse. Changez cela en une jointure gauche et vous devriez obtenir les résultats que vous attendez. Un LEFT OUTER JOIN vous donnera toujours tous les enregistrements dans la première table - plus les enregistrements dans la deuxième table, si possible.

+0

Merci. Je ferai d'autres recherches sur ces deux choses. – DemCodeLines