2010-11-20 15 views
0

Ok, ich versuche, eine Ansicht zu erhalten, die einige Felder von einer Drupal-Instanz zurückgibt, die auf MySQL läuft. Das Problem ist, diese Information wird über drei Tabellen verteilt:Auswählen von Daten über mehrere Tabellen hinweg in MySQL

Tabelle 1 (keyword_search_table): enthält folgende Felder:

id, Stichwort, dst Beispieldaten: 1, 'Huhn', ‚aboutus/fred‘ 2, 'Boxen', 'Dienstleistungen/patching_stuff'

Tabelle 2 (url_alias): enthält die folgenden Felder:

pid, src, dst Beispiel Daten: 45, 'node/22' "aboustus/fred" 'node/36', 'patching_stuff'

Tabelle 3 (node_revisions): enthält die folgenden Felder:

nid, Titel, teaser Beispiel Daten:

22 ‚über Fred - Unser Präsident ',' Fred ist ein großartiger Kerl und war seit 4 Jahren preses ... ' 36,' Patch dein Deck ',' Patch dein Deck sollte mit Stacheldraht gemacht werden ... "

ich ' Ich versuche, damit zu enden:

Stichwort, DESTINATION_URL, Titel, teaser_text

Beispiel Ausgabe basierend auf Daten über:

  1. Huhn, aboutus/fred, Über Fred - Unser Präsident ist Fred ein toller Typ und hat pres für 4 Jahre. mit Stacheldraht getan werden ... ..
  2. Boxen, Dienstleistungen/patching_stuff, Ihr Deck Patchen, sollte Ihr Deck Patchen

Im schätzend ich brauche einige innere äußere und links schließt sich zu tun ... ich M schlecht beim Schreiben dieses Zeug. Irgendwelche Ideen?

Antwort

0

Sie können diese Daten nicht abrufen, weil url_alias nicht nur nid pid enthält. JOIN kann auf ähnlichen Feldern in verschiedenen Tabellen erstellt werden. Zum Beispiel wähle ich Daten aus keyword_search_table und node_revisions.title.

 
SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid; 

wenn url_alias mit nid (oder Sie können sicher sein, dass nid = pid) Ihre Abfrage so ähnlich aussehen:

 
SELECT keyword_search_table.nid, keyword_search_table.keyword, node_revisions.title, node_revisions.teaser, url_alias.pid FROM keyword_search_table INNER JOIN ON keyword_search_table.nid = node_revisions.nid INNER JOIN ON url_alias.pid = node_revisions.nid; 
+0

Das macht total Sinn für mich. Danke! Aber eine Sache, die ich weiß, ist, dass die Spalte "keyword_search_table ID" keine Beziehung zu PID oder NID hat. Es ist für sich allein. Jeder Datensatz in dieser Tabelle hat eine URL_Alias, die mit einem URL-Alias ​​in der url_alias-Tabelle übereinstimmt. – tonyrocks

+0

Wenn keyword_search_table.id nicht NID ist, müssen Sie andere verknüpfte Daten suchen - zB URL_Alias. Die Abfrage sollte wie folgt aussehen: SELECT Schlüsselwort_Such_Tabelle.NID, Schlüsselwort_Such_Tabelle.Schlüsselwort, Knoten_revisionen.Titel, Knoten_revisionen.Teaser, URL_Alias.PID INNER JOIN ON Schlüsselwort_Suchentabelle.url_alias = URL_Alias.url_alias INNER JOIN ON url_alias.pid = node_revisions.nid; –

+0

Ich will nicht dumm klingen, aber brauche ich irgendwo eine FROM? – tonyrocks

Verwandte Themen