tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Yaslaw
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
403
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tribal Tribal ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    Hallo zusammen,

    erst einmal ein "Hallo" in die Runde, ist mein erster Eintrag hier, allerdings hat mir diese Seite schon ein paar mal geholfen.

    Jetzt habe ich ein Problem (oder sehe den Wald vor lauter Bäumen nicht):
    Ich erstelle gerade eine Bilderdatenbank, Grundgedanke ist, dass der Nutzer später anhand von Tags die Daten filtern kann. Jedoch habe ich genau mit der Filterung ein Problem. Ich vermute fast, dass mein Datenmodell nicht optimal für diese Anwendung ist. Aber ich schreib erst mal kurz, wie mein bisheriger Ansatz ist.

    Ich habe mir insgesamt 3 Tabellen erstellt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Tabelle "Bilder"
     
    BildID   |Bildpfad            |Bildbeschreibung
    ---------+--------------------+--------------------
      1      | ./images/pic1.jpg  | blabla
      2      | ./images/pic2.jpg  | suelz
      3      | ./images/pic3.jpg  | laber
      4      | ./images/pic4.jpg  | nix

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    Tabelle "BilderTags"
     
    TagID    |Tagname         
    ---------+--------------------
      1      | Anbau 
      2      | Kompressor 
      3      | Stahlblech 
      4      | Edelstahl

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Tabelle "XBilderTags"
     
    XBTID |xBildID | xTagID         
    ------+--------+-------
      1   |    1   |   1
      2   |    1   |   2
      3   |    1   |   3
      4   |    2   |   1
      5   |    2   |   2
      6   |    2   |   3
      7   |    3   |   1
      8   |    3   |   2
      9   |    3   |   3
     10   |    4   |   1
     11   |    4   |   2
     12   |    4   |   4

    Daraus ergeben sich folgende Bilder<=> Tag Kombinationen:

    Code :
    1
    2
    3
    4
    
    pic1.jpg = Anbau, Kompressor, Stahlblech
    pic2.jpg = Anbau, Kompressor, Stahlblech
    pic3.jpg = Anbau, Kompressor, Stahlblech
    pic4.jpg = Anbau, Kompressor, Edelstahl

    Meine Idee war, jetzt einfach eine Abfrage über die XBilderTags Tabelle laufen zu lassen um bspw. alle Anbaugeräte mit Kompressor aus Stahlblech laufen zu lassen. Das ist jedoch eine UND-Verknüpfung, da ja alle 3 Bedingungen erfüllt sein müssen. Mit einer ODER-Verknüpfung bekomme ich dann ja alle 4 Bilder als Ergebnis.

    Habe ich zu stark normalisiert oder bin ich zu blind um eine Lösung mittels SELECT zu generieren?
     

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Ist gneau richtig normalisiert

    Du kannst die Auswahl ganz normal machen. Dann Gruppieren auf das Bild und Zählen ob die Anzahl Treffer auch stimmt.

    Als Beispiel mit den Suchbegriffen Anbau, Kompressor, Edelstahl -> Ergo 3 Begriffe
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    SELECT
        b.id,
        b.bildpfad,
        b.bildbeschreibung,
        GROUP_CONCAT(t.tagname SEPARATOR ', ') AS tags
    FROM
        bilder AS b
        INNER JOIN xbildertags AS x ON b.bildid = x.xbildid
        INNER JOIN bildertags AS t ON x.xtagid = t.tagid
    WHERE
        --Kann auch über ein normales OR gelöst werden
        FIND_IN_SET(t.tagname, 'Anbau,Kompressor,Edelstahl'
    GROUP BY
        b.id
    HAVING
        COUNT(DISITNCT tagid) = 3

    Das ganze ist natürlich ungetestet....
    Tribal bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Tribal Tribal ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    4
    Hallo yaslaw,

    funktioniert einwandfrei. Das einzige was er angemeckert hat war das Find_in_set, habe das durch OR Argumente ersetzt, hat dann funktioniert. Tadellos! Darf ich Dich MySQL-Gott nennen

    Gruß

    Tribal
     

Ähnliche Themen

  1. MySQL SELECT Verknüpfung von strings
    Von tecla im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 04.08.08, 10:03
  2. Antworten: 1
    Letzter Beitrag: 03.07.06, 11:54
  3. [MySQL] Verknüpfung DB & Textverarbeitung
    Von Snodri im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 27.08.05, 17:42
  4. Verknüpfung von Tabellen zwischen Oracle und MySQL
    Von beppino im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 31.08.04, 11:29
  5. mySQL: Mit zweifacher Verknüpfung mit einer Tabelle
    Von diwa im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 15.08.04, 00:01