mysql query frage

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    mysql query frage

    mahzeit!

    habe ein frage, hoffe ihr könnt mir weiterhelfen.
    ich habe 2 tabellen die folgendermaßen aufgebaut sind.

    locations:
    id|titel|adresse

    kategorien
    id|location_id|kategorie

    jede location kann mehrere kategorien haben, z.b die location mit der id 1 hat die kategorie kaufhaus und die kategorie gasthaus

    dann würde das so aussehen

    locations:
    id|titel|adresse
    1|test|musterstrasse 3

    kategorien:
    id|location_id|kategorie
    12|1|kaufhaus
    13|1|gasthaus

    nun will ich mit der date result.php immer 2 get parameter (cat1 und cat2) abfragen.

    wie muss ich das query gestalten, dass es mit die locations zeigt bei denen cat1 und cat2 so sind wie definiert?

    z.b. result.php?cat1=kaufhaus&cat2=gasthaus

    dann will ich alle locations die diese 2 categorien haben.

    danke!!!!
    Hier zwei (ungetestete) Varianten:

    SQL-Abfrage

    1. SELECT l.*
    2. FROM locations l INNER JOIN (kategorien k1 INNER JOIN kategorien k2 ON k1.locatioin_id = k2.location_id) ON l.id = k1.location_id
    3. WHERE k1.katgeorie = 'kaufhaus' AND k2.kategorie = 'gasthaus'


    SQL-Abfrage

    1. SELECT *
    2. FROM locations l
    3. WHERE EXISTS(SELECT * FROM kategorien k WHERE k.location_id = l.id AND k.kategorie = 'kaufhaus')
    4. AND EXISTS(SELECT * FROM kategorien k WHERE k.location_id = l.id AND k.kategorie = 'gasthaus')

    windowsfan schrieb:

    ich habe 2 tabellen
    Schätze Fehldesign, denn für eine Multi-Kategorisierung braucht man 3 Tabellen:
    Location->Zuordnung<-Kategorie

    Bei deinem System musst du bei jeder Kategorie-Zuordnung die "Kategorie" neu definieren, also dir kann mit Leichtigkeit unterlaufen, dass die eine Location u.a. die Kategorie "Kaufhaus" bekommt, und eine annere dann "Kafhaus".

    windowsfan schrieb:

    eine der verfügbaren kategorien
    Genau das ist, was die 3. Tabelle zu leisten hat: Dort werden die verfügbaren Kategorien gehalten.
    Also die Problematik hast du erkannt und gelöst, nur ist deine Umsetzung unprofessionell, denn offensichtlich hälst du die verfügbaren Kategorien irgendwo anders als im Datenmodell.
    Dabei ists das relationale an der relationalen GrundIdee, dass solche Fälle mit abgedeckt sind.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()