2016-04-19 9 views
2

SQL-Neuling hier. Ich habe das folgende Schema.Join Elemente aus drei unabhängigen Tabellen

Ich soll eine Liste aller aktiven primären supergeladenen Domänen zur Verfügung stellen, die zur foobar-Assoziation gehören.

Soweit ich weiß, können drei Tabellen (Sites, Domain und Name) nicht zusammengefügt werden. Wie kann das gemacht werden?

+1

Sie können Joins/_... VON einem INNEREN JOIN b ON [Bedingung1] INNER JOIN c ON [Condition2] _ – Uueerdo

+1

"ketten" natürlich können Sie drei oder mehr Tabellen beitreten! –

+0

Sie können mit Sicherheit 3 ​​oder mehr Tische miteinander verbinden. Sie müssen nur etwas haben, um sich ihnen anzuschließen ... Aus dem Blick auf das, was Sie zur Verfügung gestellt haben, bin ich nicht sicher, ob dies mit dem von Ihnen bereitgestellten Schema getan werden kann, da die Felder in den Tabellen unterschiedlich zu sein scheinen (es sei denn, ID ist tatsächlich, was verwendet wird, um sie zu verknüpfen, würde ich vermuten, dass Sie einige Gruppierungstabellen vermissen würden, die zwischen diesen sitzen würden) – user2366842

Antwort

2

Dies ist ein Beispiel für

SELECT * FROM companies 
JOIN sites ON sites.company = companies.id 
JOIN domains ON domains.site = sites.id 
WHERE 
    sites.is_supercharged = 1 AND sites.is_deleted = 0 AND 
    domains.is_primary = 1 AND domains.is_deleted = 0 

Es auf dem Schema basiert drei Tabellen verknüpft (ich hoffe, die Feldnamen korrekt sind, wird der Text recht klein ist)

Wenn Sie eine Tabelle auf eine Verbindungs Query, müssen Sie die übereinstimmenden Felder Referenz im ON Teil angeben. Und dann können Sie jede Bedingung im WHERE Teil hinzufügen.

+0

Da die Benennungskonvention so sehr schlecht ist, sollte das OP tatsächlich ausschreiben, was die PK/FK-Beziehungen wissen sollen, an welchen Feldern sie teilnehmen sollen. Ich stimme zu, dass Ihre Auswahl für alle wahrscheinlich ist, außer für die Verbindung zwischen Domain und Site. Dies ist ein gutes Beispiel dafür, warum die Verwendung von Id als PK schlecht ist. Es ist nicht offensichtlich, was die Join-Felder sind. Aber da das Diagramm Beziehungen hat, bin ich sicher, dass sie irgendwo da sind. Sie zu scripten ist der sicherste Weg, sicher zu sein, dass Sie sich den richtigen Feldern anschließen. – HLGEM

+0

Aber die roten, sind sie nicht die Fremdschlüssel zu den anderen Tischen? Ich hoffe, dass, wenn ich falsch liege, das OP zumindest das allgemeine Konzept der Tabellenbeitritte bekommen wird. –

+0

Ja, ich denke du hast wahrscheinlich Recht, aber er muss sichergehen, anstatt zu raten. Ich fürchte, diese kleinen Farbveränderungen waren zu schwer für meine alten bifokalen Augen, bis Sie darauf hingewiesen haben! – HLGEM