Zum Inhalt springen

Verschachtelte Abfrage (joins)


UBAI

Empfohlene Beiträge

Morgen erst mal.

Ich habe ein "kleines" Problemchen. Vor lauter Programmierung seh ich hier aber leider die Lösung nicht :confused:

Hier der DB - Aufbau:

Tabelle Produkt:

- Produkt_ID (PS)

- Beschreibung

- Größe

- Pfad

Tabelle Rubrik:

- Rubrik_ID (PS)

- Beschreibung

Ein Produkt kann mehreren Rubriken zugewiesen sein !

Tabelle Produkt_Rubrik:

- Produkt_ID (PS + Relat)

- Rubrik_ID (PS + Relat)

zu jedem Produkt können mehrere Details hinterlegt werden, wobei ein Detail aber nur zu einem Produkt gehört !

Tabelle Details:

- Produkt_ID (PS + Relat)

- Zeilennr. (PS)

- Beschreibung

So weit so gut. Jetzt hab ich aber folgende Konstelation: Ein User wählt eine Rubrik aus. Z.B. Rubrik "Anleitung"

Er möchte jetzt alle Produkte sehen, die zu dieser Rubrik gehören. Das ist auch noch kein Problem. Jetzt will er aber auch nach einem Detail zu dieser Rubrik suchen. Also habe ich 2 Parameter. 1. die Rubrik, 2. die Detailbeschreibung.

Wie kann ich beides in einer select - Abfrage gestalten ?

Also die Rubrik muß in der Tabelle Produkt_Rubrik sein <- dadurch habe ich die Produkt_ID. Und bei diesen Produkten muß in der Tabelle Details muß die Beschreibungen dieses Produktes like '%Suchbegriff%' sein.

Ich hab leider keine Lösung gefunden. Ich seh aber auch den Wald vor lauter Bäumen nicht mehr :P

Gruß UBAI - Kaum macht mans richtig, schon funktionierts !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin !

Probiers mal damit:

SELECT *

FROM

((Produkt

INNER JOIN Details ON Produkt.Produkt_ID = Details.Produkt_ID)

INNER JOIN Produkt_Rubrik ON Produkt.Produkt_ID = Produkt_Rubrik.Produkt_ID)

INNER JOIN Rubrik ON Rubrik.Rubrik_ID = Produkt_Rubrik.Rubrik_ID

WHERE Rubrik.Beschreibung="Anleitung" AND Details.Beschreibung="toll";

er fängt bei der innersten Klammer an und arbeitetet sich nach aussen durch, dann kannst Du mit der Where Klausel ganz normal das Ergebnis einschränken.

Hoffe das hilft Dir weiter !

Gruß

Christian

------------------------------------------------------------

"All power corrupts. Absolute Power is kinda neat though..."

"50.000 gold a year in child care and they call it a CULT ?!?"

- Kel'Thuzad, Archlich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Super. Genau das wars. Hatte ich so in etwa auch. Nur hatte ich die Sch.. Klammern vergessen + verdrehter Join. Danke. Für alle die es interessiert hier der Quelltext ind Verbindung mit PHP.


$sql = "SELECT distinct(P.Produkt_ID),P.Beschreibung,P.Größe,P.Pfad FROM ((Produkt P
INNER JOIN Details D ON P.Produkt_ID = D.Produkt_ID)
INNER JOIN Produkt_Rubrik PR ON P.Produkt_ID = PR.Produkt_ID)
INNER JOIN Rubrik R ON R.Rubrik_ID = PR.Rubrik_ID
WHERE R.Rubrik_ID = "; //1 and D.Beschreibung = 'test'";

$sql .= $rubrik;

//wenn Suche ausgefüllt wurde
if (! (empty($suche)))
{
$sql .= " AND D.Beschreibung like '%";
$sql .= $suche;
$sql .= "%'";
}
[/PHP]

nicht schön aber es funktioniert.

Gruß UBAI - Kaum macht mans richtig, schon funktionierts !

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...