Announcement

Collapse
No announcement yet.

Create View für spätere Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Create View für spätere Abfrage

    Hallo Ihr Lieben

    Ich habe folgendes Szenario:
    Eine Tabelle "buecher" mit Büchern (id,titel,preis)
    Eine Tabelle "eigenschaften" mit Eigenschaften (rot, blau, gruen, schwer, leicht, billig, teuer)
    Eine Tabelle "suchworte" mit möglichen Suchbegriffen (Mathe, Chemie, Physik)
    Und natürlich eine LOOKUP tabelle "lookup" die die IDs der Bücher (id1) mit den jeweiligen IDs der Eigenschaften , und Suchworten (id2) verknüpft.
    Ein Eintrag in der lookup tabelle sieht dann in etwa so aus:

    id | id1 | id2 | lookup
    1 | 1 | 1 | 'buecher-eigenschaften'
    2 | 1 | 2 | 'buecher-eigenschaften'
    3 | 1 | 1 | 'buecher-suchworte'


    Wie Ihr seht, sind Mehrfachzuordnungen der einzelnen "Eigenschaften" sowie auch der "Suchworte" möglich. Nun möchte ich aber bei der späteren Vielzahl an Büchern auch nach allen möglichen Feldern suchen.


    Kann ich zu diesem Zwecke mir eine View "bauen", die bereits alle Daten und Verknüpfungen vorhält und ich später somit mit einem "einfachen Abfrage aus einer Tabelle(View)" die Daten aus dem View zu Filtern.

    So in der Art

    SELECT
    *
    FROM
    buecher_view bv
    WHERE
    bv.eigenschaft = 'rot' OR
    bv.eigenschaft = 'blau' OR
    bv.suchwort LIKE '%Mathe%'



    In meinem Beipiel gibt es oder wie frage ich nach meheren Eigenschaften und Suchworten ab?

    Vielen Dank für Eure Hilfe!

    Gruß Kuli

  • #2
    Hallo Ihr Lieben

    Nach einer kurzen Recherche bin ich glaube ich selber auf die Lösung gekommen

    Ich verknüpfe alle Tabellen einzeln über ein LEFT OUTER JOIN und "schreibe" somit alle möglichen Ergebnisse in der/die/das View. Bei der Suche per SELECT * FROM view muss ich die Ergebisse nur noch nach der buch.id gruppieren.

    Sollte doch richtig sein, oder?

    Hier der komplette Code zum nachforschen:

    Code:
    SELECT 
    	buecher.signatur,
    	buecher.leihstandort,
    	buecher.name,
    	buecher.hauptsachtitel,
    	buecher.hauptsachtitel_zusatz,
    	buecher.verfasser,
    	pub.publikation,
    	sg.sachgruppe,
    	hsg.hauptsachgruppe,
    	sw.schlagwort,
    	sprachen.sprache,
    	textsorte.textsorte
    FROM 
    	bibliothek_buecher buecher
    	
    -- PUPLIKATION
    LEFT OUTER JOIN 
    	bibliothek_lookup lookup2
    	ON lookup2.id1 = buecher.id AND lookup2.lookup = 'buecher-publikationsform'
    LEFT OUTER JOIN
    	bibliothek_publikation pub
    	ON pub.id = lookup2.id2
    	
    -- SACHGRUPPE
    LEFT OUTER JOIN 
    	bibliothek_lookup lookup3
    	ON lookup3.id1 = buecher.id AND lookup3.lookup = 'buecher-sachgruppe'
    LEFT OUTER JOIN
    	bibliothek_sachgruppe sg
    	ON sg.id = lookup3.id2
    -- HAUPTSACHGRUPPE
    LEFT OUTER JOIN
    	bibliothek_hauptsachgruppe hsg
    	ON hsg.id = sg.hauptsachgruppe
    
    -- SCHLAGWÖRTER
    LEFT OUTER JOIN
    	bibliothek_schlagwoerter sw
    	ON sw.buch_id = lookup2.id1
    
    
    -- SPRACHEN
    LEFT OUTER JOIN
    	bibliothek_lookup lookup4
    	ON lookup4.id1 = buecher.id AND lookup4.lookup = 'buecher-sprachen'
    LEFT OUTER JOIN
    	bibliothek_sprache sprachen
    	ON sprachen.id = lookup4.id2
    	
    
    -- TEXTSORTE
    LEFT OUTER JOIN
    	bibliothek_lookup lookup5
    	ON lookup5.id1 = buecher.id AND lookup5.lookup = 'buecher-textsorte'
    LEFT OUTER JOIN
    	bibliothek_textsorte textsorte
    	ON textsorte.id = lookup5.id2

    Comment

    Working...
    X