php mysql double jointure interne
Donc, j'ai 3 tables
postes
- id
- post_id
- user_id
commentaires
- id
- post_id
- comment_id
- user_id
- supprimé
réponses
- id
- post_id
- reply_id
- user_id
- supprimé
j'essaie de le faire tous les commentaires et les réponses de chaque post.post_id avec la poste.user_id=x
j'ai essayé
SELECT *
FROM posts AS p
INNER JOIN comments as c
ON c.comment_id=p.post_id
INNER JOIN replies as r
ON r.reply_id=p.post_id
WHERE
p.user_id='x'
qui renvoie 0...
MODIFIER
solution a été
SELECT *
FROM POSTS A
LEFT JOIN COMMENTS B ON A.POST_ID=B.COMMENT_ID
LEFT JOIN REPLIES C ON A.POST_ID=C.REPLY_ID
WHERE A.USER_ID='X'
donc, si j'ajoute une suppression de la colonne des commentaires et des réponses tables, comment puis-je vérifier si le commentaire ou la réponse que j'obtiens n'est pas supprimé?
j'ai essayé d'ajouter après A.USER_ID='X' && B.deleted='0' && C.deleted='0'
mais renvoie 0.
modifier la * de domaines précis, il aura plus de sens pour vous
je suis en train d'essayer d'obtenir le montant total des lignes de cette requête... donc si je veux obtenir certaines colonnes, devrais-je ajouter, au lieu de * afin de faire, je travail?
je suis en train d'essayer d'obtenir le montant total des lignes de cette requête... donc si je veux obtenir certaines colonnes, devrais-je ajouter, au lieu de * afin de faire, je travail?
OriginalL'auteur fxuser | 2011-06-04
Vous devez vous connecter pour publier un commentaire.
Vous manquez une relation de clé dans votre modèle. Vous avez besoin d'avoir une colonne dans les réponses et les commentaires pour post_id, puis joindre les tables sur post_id.
Une fois que vous avez fait ce changement, alors votre requête devrait ressembler à ceci:
si j'ai ajouter 2 colonnes sur les commentaires et les réponses comme supprimé, comment puis-je vérifier si le commentaire ou la réponse est supprimé ou pas? 0 n'est pas supprimé et 1 est supprimé... j'ai essayé d'ajouter && c.supprimé='0' && r.supprimé='0' dans la clause where, mais je reçois de retour 0
concernant les autres critères, ne pas utiliser de
&&
, utilisezAND
OriginalL'auteur AJ.
Essayez d'utiliser left join au lieu de jointures internes, cela permettra de s'assurer que toutes les lignes de la table POSTS correspondant à la OÙ les critères sont présents.
OriginalL'auteur garnertb
De ce que je peux voir la post_id est absent de toutes les tables. Trop d'id.
Vous changer de tableau, de sorte que les relations sont évidentes, alors vous pouvez extraire des données assez facilement.
OriginalL'auteur webb