MySQL: Join von 3 Tabellen

DeMoehn_sm

Grünschnabel
Guten Tag ihr lieben User.
Heute musste ich mich zum ersten Mal mit einem wirklichen (für mich) aufwendigen MySQL Problem beschaffen.

Ich möchte eine kleine Suche machen und muss dabei Rücksicht auf 3 Tabellen nehmen.
Hier mal kurz die Tabellen: (siehe Anhang)


Nun habe ich bereits folgendes versucht zu schreiben, aber erhalte dabei kein Ergebnis:
Code:
SELECT * FROM `content` 
INNER JOIN `submenu` ON `content`.`sub_id` = `submenu`.`id` 
INNER JOIN `mainmenu` ON `submenu`.`main_id` = `mainmenu`.`id` 
WHERE `content`.`text` LIKE "%Kinder%" 
AND `submenu`.`mode` = "categorie" 
AND `submenu`.`status` = "active" 
AND `mainmenu`.`mode` = "admin" 
AND `mainmenu`.`status` = "active";

Ja, es existiert ein Wort "Kinder" in der Spalte "text" der Tabelle "content".

Zur Erklärung:
In "Content" habe ich die Texte gespeichert.
In "Submenu" sind die Menupunkte und somit auch die Verlinkungen zu Content.
In "Mainmenu" sind die Überpunkte zu "Submenu".

"Content" ist durch "sub_id" mit "id" von "Submenu" verbunden.
"Submenu" ist durch "main_id" mit "id" von "Mainmenu" verbunden.

Nun muss ich diverse Rechte aus Mainmenu und Submenu berücksichtigen um nur die korrekten Texte aus "Content" zu lesen

Hoffe jemand hat einen Verbesserungsvorschlag, wie ich am besten den Ausdruck schreibe.

Mfg,
Sebastian Möhn

PS: natürlich reichen mir auch Links oder Tips wie ich die Sache angehn soll
 

Anhänge

  • content.jpg
    content.jpg
    10,4 KB · Aufrufe: 77
  • mainmenu.jpg
    mainmenu.jpg
    18,5 KB · Aufrufe: 58
  • submenu.jpg
    submenu.jpg
    11,2 KB · Aufrufe: 77
Moin Demoehn_sm,

ich denke, die möglichen Treffer auf einen Wert "categorie" (interessante universalsprachliche Schreibweise BTW) werden relativ unwahrscheinlich sein bei einem definierten SET von ('main', 'sub', 'free').

Ansonsten sollte es durchaus fliegen.
SQL:
SELECT * FROM `content` 
INNER JOIN `submenu` ON `content`.`sub_id` = `submenu`.`id` 
INNER JOIN `mainmenu` ON `submenu`.`main_id` = `mainmenu`.`id` 
WHERE `content`.`text` LIKE '%Kinder%' 
AND `submenu`.`mode` <> 'categorie'   -- nur zum test --
AND `submenu`.`status` = 'active' 
AND `mainmenu`.`mode` = 'admin' 
AND `mainmenu`.`status` = 'active';

Nur interessehalber: was verbirgt sich denn für eine Idee hinter "date varchar(240)"

Grüße
Biber
 
Zuletzt bearbeitet:
Zurück