J'ai une requête telle que je dois obtenircomplexe requête SQL, relation un à plusieurs
- Un chien spécifique
- Tous les commentaires relatifs à ce chien
- L'utilisateur qui a posté chaque commentaire
- Tous les liens vers les images du chien
- l'utilisateur qui a posté chaque lien
J'ai essayé plusieurs choses et je n'arrive pas à comprendre comment l'utiliser. Voici ce que j'ai (condensé de sorte que vous n'avez pas à patauger dans tout):
SELECT s.dog_id,
s.name,
c.comment,
c.date_added AS comment_date_added,
u.username AS comment_username,
u.user_id AS comment_user_id,
l.link AS link,
l.date_added AS link_date_added,
u2.username AS link_username,
u2.user_id AS link_user_id
FROM dogs AS d
LEFT JOIN comments AS c
ON c.dog_id = d.dog_id
LEFT JOIN users AS u
ON c.user_id = u.user_id
LEFT JOIN links AS l
ON l.dog_id = d.dog_id
LEFT JOIN users AS u2
ON l.user_id = u2.user_id
WHERE d.dog_id = '1'
Il est sorta près de travailler, mais ça ne me renvoie le premier commentaire, et le premier lien tout comme un grand tableau avec toutes les informations que j'ai demandées. Il y a plusieurs commentaires et liens par chien, donc j'en ai besoin pour me donner tous les commentaires et tous les liens. Idéalement, il retournera un objet avec dog_id, nom, commentaires (un tableau des commentaires), liens (un tableau des liens), puis les commentaires auront un tas de commentaires, date_added, nom d'utilisateur, et user_id et les liens auraient un tas de liens avec le lien, date_added, nom d'utilisateur et user_id. Cela doit fonctionner même s'il n'y a pas de liens ou de commentaires.
J'ai appris les bases de mySQL un peu récemment, mais c'est assez loin de ma tête. Toute aide serait merveilleuse. Merci!
+1 - une seule requête fonctionnerait, et pourrait être un peu plus rapide, mais l'utilisation de trois requêtes plus petites simplifierait grandement les choses. –
Rend ma vie plus facile de toute façon. Merci! – Ethan