2011-05-26 5 views
0

Avoir un modèle d'article, chaque article a un auteur et un éditeur (les deux sont des tables). Un utilisateur peut suivre les auteurs et les éditeurs.Requête SQL super compliquée

utilisateur -> Suivi -> Auteur ou Editeur -> Article

Je veux trouver tous les articles par les auteurs et les éditeurs qu'ils suivent.

SELECT articles.*, articles2.* FROM follows 
INNER JOIN articles ON follows.author_id = articles.author_id 
INNER JOIN articles AS articles2 ON follows.publisher_id = articles2.publisher_id 
WHERE follows.user_id = 1 

Puis-je obtenir tous les articles en 1 requête? Si c'est le cas, comment? Sinon, puis-je combiner deux requêtes, puis les commander?

+0

mysql et SQL ont une syntaxe différente, s'il vous plaît sélectionnez la bonne étiquette – diEcho

+0

désolé l'a fixé. – John

Répondre

1
select a.* from follows f 
inner join articles a on (a.author_id = f.author_id or a.publisher_id=f.publisher_id) 
where f.user_id = 1 
+0

Belle réponse;), vous étiez 4 secondes plus rapide! – Zoidberg

+0

Devinez ce n'était pas si difficile après tout. Merci beaucoup. J'ai passé les 3 dernières heures à essayer de comprendre. – John

+0

jep, même que le vôtre hehehe :) –

0
SELECT articles.*, articles2.* FROM follows 
INNER JOIN articles ON (follows.author_id = articles.author_id OR follows.publisher_id = articles.publisher_id) 
WHERE follows.user_id = 1 

qui devrait fonctionner pour vous.

0
SELECT articles.* FROM follows,articles 
WHERE follows.user_id = 1 
AND (follows.author_id = articles.author_id 
    OR follows.publisher_id = articles2.publisher_id) 
0

Du haut de ma tête.

articles SELECT * FROM suit INNER JOIN articles sur follows.author_id = articles.author_id OÙ follows.user_id = 1

UNION

SELECT articles. * FROM suit INNER JOIN articles ON follows.publisher_id = articles.publisher_id WHERE follows.user_id = 1 commande par articles.title

0

articles SELECT. * FROM suit INNER JOIN articles sur follows.author_id = articles.author_id

union all

SELECT articles2. * FROM suit INNER JOIN articles AS articles2 ON suit .publisher_id = articles2.publisher_id

Quelque chose comme ça.