2016-05-07 18 views
0

Ich habe 3 Tabellen.MYSQL, wie wählen Sie zwischen 3 Tabellen

Tabelle

topic_id topic_name topic_forum 
1   "Test 1"  1 
2   "Test 2"  2 

Table 'Foren'

post_id post_content post_topic 
1   "Test"   1 
2   "How are you" 1 
3   "Hey"   1 
4   "What"   2 

Table 'Themen' 'Beiträge'

forum_id forum_name 
1   "Food" 
2   "Game" 

Zum Beispiel möchte ich alle Datensätze aus Beiträge auszuwählen, in dem topic_forum ist 1

Also in diesem Fall sollte ich JOIN verwenden?
Kann mir jemand erklären, wie? Vielen Dank.

+3

Whas tun bedeutet, dass Sie durch " post_topic -> topic_forum = 1 "? –

Antwort

5

Dies wird alle Datensätze von Posts wo forum_name = 'Essen' auswählen.

Wählen P. * aus Pfosten P, Themen T, Foren F wo F.forum_id = T.topic_forum und T.topic_id = P.post_topic und F.forum_id = '1'

2

Sie benötigen Abfrage verwenden Join, so etwas wie Code unten,

SELECT p.*,t.*,f.forum_id 
 
FROM posts p 
 
    LEFT JOIN topics t ON p.post_topic=t.topic_id 
 
    LEFT JOIN forums f on t.topic_forum=f.forum_id 
 
WHERE t.topic_forum=1

+0

Ausgabeergebnis sollte in Ordnung sein, aber die zweite linke Verbindung zu 'Foren' Tabelle ist nicht erforderlich. – Jigar

0

Dies wird alle Beiträge aufzuzählen, in denen topic_forum 1. ist

select * from posts p 
left join topics t 
    on t.topic_id = p.post_topic 
where t.topic_forum = 1 

alle Beiträge aufzulisten wo forum_name = 'Nahrung'

select * from posts p 
left join topics t 
    on t.topic_id = p.post_topic 
left join forums f 
    on f.forum_id = t.topic_forum 
where f.forum_name = 'Food' 
+0

Es funktioniert, Danke – user3030712