Comment pouvez-vous joindre à ces 5 tables ensemble:Sélection de certains messages marqués et leurs auteurs
tag: id, name
author: username, id
thread_tags: thread_id, tag_id
thread: id, content
author_threads: author_id, thread_id
(J'ai aussi une table appelée author_tags (tag_id, AUTHOR_ID), mais je ne pense que c'est nécessaire ici).
Je veux sélectionner tous les sujets qui sont marqués d'une certaine étiquette et leurs auteurs.
Le code suivant retourne #1066 - Not unique table/alias: 'tag'
SELECT thread.content, author.username
FROM tag
JOIN thread_tags ON thread.id = thread_tags.thread_id
JOIN tag ON thread_tags.tag_id = tag.id
JOIN author_threads ON author.id = author_threads.author_id
JOIN author ON author_threads.thread_id = thread.id
WHERE tag.name = 'arsenal'
EDIT:
Cela fonctionne:
SELECT thread.content
FROM tag
JOIN thread_tags ON tag.id = thread_tags.tag_id
JOIN thread ON thread.id = thread_tags.thread_id
WHERE tag.name = 'tagged'
LIMIT 0 , 30
Cependant chaque fois que je tente de joindre les auteurs avec leurs fils, il jette # 1066 erreurs .
Accepter que l'un des 'tag's devrait être' thread', mais je pense qu'il doit être le premier. (Vous pouvez voir cela du fait que 'thread 'est référencé dans la première condition de jointure.) –
@Andriy: oui, si nous voulons effectuer les changements minimum (et la requête fonctionne!), Nous devrons changer le premier 'tag' ->' thread' et d'échanger les deux dernières conditions «ON ...'. –