Denkanstoss zu INNER JOIN mit 3 Tabellen
spyfan
- datenbank
1 Encoder0 spyfan
1 Vinzenz Mai
Als erstes möchte ich mich mal dafür bedanken, dass es diese Page gibt. Ihr seid meine Anlaufstelle Nummer1 wenn ich irgendwas zu PHP,SQL oder HTML nachschlagen muss. Diese Page ist eine echte Hilfe. Nun zu meinem Anliegen....
Schmweren Herzens muss ich nun doch einen Thread erstellen und um etwas Hilfe bitten. Ich tuhe mich noch etwas schwer mit verschachtelten INNER JOIN bei mehr als 2 Tabellen.
Folgendes Tabellenkonstrukt liegt vor:
Tab1: cms_content
Spalten: id,CatID,Subject,headline,text,posterID,is_deleted
Tab2: cms_contentcategories
Spalten: CatID,CatName
Tab3: cms_user
Spalten: id,forum_userID,username,email
Aus Tabelle cms_content brauche ich alles (logisch).
Die Spalte CatID dient als Referenz für die Tabelle cms_contentcategories
Die Spalte posterID dient als Referenz für die Tabelle cms_user
Ich schaffe es cms_content mit cms_contentcategories zu verknüpfen:
SELECT cms_content.id,cms_content.text,cms_content.Subject,cms_content.headline,cms_contentcategories.Catname
FROM `cms_content`
INNER JOIN `cms_contentcategories` ON (cms_content.CatID=cms_contentcategories.CatID)
ORDER BY `id` DESC LIMIT 0, 30
Aber wie schaffe ich es nun das er auch noch alles aus cms_user mit ausliest?
Meine bisherigen Verschachtelungsversuche gingen nicht weiter als bis hier:
SELECT
id,CatID,Subject,headline,text,posterID,autorID,is_deleted,
CatName,
forum_userID,username,email
FROM cms_content INNER JOIN
(cms_content INNER JOIN
cms_contentcategories ON cms_content.CatID = cms_contentcategories.CatID)
cms_user ON cms_content.posterID = cms_user.id
Diese Abfrage scheitert jedoch mit dem Ergebniss "Not unique table/alias: 'cms_content'"
Wer also Lust und Zeit hat einem bedarften SQL-User etwas Schützenhilfe zu geben....
SELECT * FROM
A INNER JOIN B ON B.feldname = A.feldname
INNER JOIN C ON C.feldname = A.feldname
INNER JOIN ....
einfach hintereinander schreiben
omg.... :facepalm: so einfach geht das... ich bin das viel zu kompliziert angegangen. funktioniert einwandfrei
SELECT * FROM
cms_content INNER JOIN cms_contentcategories ON cms_contentcategories.CatID = cms_content.CatID
INNER JOIN cms_user ON cms_user.id = cms_content.posterID
Nur noch auf die notwendigsten Spalten kastrieren um etwas performance zu gewinnen aber das ist ja nun ein leichtes. Ich danke dir!
Hallo,
Folgendes Tabellenkonstrukt liegt vor:
Tab1: cms_content
Spalten: id,CatID,Subject,headline,text,posterID,is_deleted
Tab2: cms_contentcategories
Spalten: CatID,CatName
Tab3: cms_user
Spalten: id,forum_userID,username,email
Aus Tabelle cms_content brauche ich alles (logisch).
Die Spalte CatID dient als Referenz für die Tabelle cms_contentcategories
Die Spalte posterID dient als Referenz für die Tabelle cms_user
Der Abschnitt Mehrere Tabellen mit JOIN verknüpfen - unterschiedliche Joinspalten aus SELFHTML aktuell passt auf Dein Problem. Gehe analog vor.
Freundliche Grüße
Vinzenz