Ankündigung

Einklappen
Keine Ankündigung bisher.

select mit inhalten aus mehreren Tabellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wurtzel
    hat ein Thema erstellt select mit inhalten aus mehreren Tabellen.

    select mit inhalten aus mehreren Tabellen

    ich habe 3 ( Firmen, Gruppen, Mitarbeiter) tabellen die nach folgendem Muster aufgebaut sind
    ID , Name, Vorname, Strasse, ....

    und eine tabelle aktionen
    AID
    Utyp ENUM('F','G','M') // Angabe welche der obrigen Tabellen zugeordnet ist
    Uid // Id in der obrigen Tabelle


    Nun möchte ich eine Ausgabe

    AID, Utyp, Name, Vorname, Strasse


    Code:
    select 
    AId,
    Utyp,
    if(a.Utyp='M',(select m.name from mitarbeiter m where m.ID=a.Uid),
    if(a.Utyp='F' , (select f.name from firmen f where f.ID=a.Uid),
    if(a.eUtyp='G',(select g.name from gruppen g where g.ID=a.Uid))))
    as name,
    if(a.Utyp='M',(select m.vorname from mitarbeiter m where m.ID=a.Uid),
    if(a.Utyp='F',(select f.vorname from firmen f where f.ID=a.Uid),
    if(a.eUtyp='G',(select g.vorname from gruppen g where g.ID=a.Uid))))
    as vorname
    if(a.Utyp='M',(select m.strasse from mitarbeiter m where m.ID=a.Uid),
    if(a.Utyp='F',(select f.strasse from firmen f where f.ID=a.Uid),
    if(a.eUtyp='G',(select g.strasse from gruppen g where g.ID=a.Uid))))
    as strasse
    from aktionen
    gibt es eine möglichkeit die Abfrage nach name, vorname, strasse
    in einer subquery zusammen zufassen

  • wurtzel
    antwortet
    Dein vorschlag war diese Daten in eine Tabelle zu bringen

    dieser select kann dies zum beispiel tun und dabei noch filterregeln beachten

    was in der db wesentlich schneller geht als diese relativ umständlich in php zu programmieren


    mir gehts in diesem fall eher darum die 9 subselects auf 3 zu reduzieren

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Ich versteh immer noch nicht, warum du alles mit einem SELECT handhaben willst.

    Was hast du vor?
    Was spricht gegen 3 SELECTs, wenn die Tabellen nunmal unterschiedlich sind?

    Komplexität ist kein Argument für einen gesammelten SELECT, sondern dagegen.

    Einen Kommentar schreiben:


  • wurtzel
    antwortet
    das kann ja jeder

    es ist nur manchmal einfacher einen Komplexen select zu schreiben als umständlich über umwege dies im Programm zu realisieren

    der obrige select ist eine starke vereinfachung des eigentlichen bei mir verwendeten selects

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Lass sowas. Wenn sich die Struktur unterscheidet, dann verwende pro Tabelle auch einen eigenen SELECT.

    Einen Kommentar schreiben:


  • wurtzel
    antwortet
    diese tabellen stimmen nur in einem kleinen teil von der struktur her überein
    und stammen aus verschiedenen Teilprojekten damit es nicht ausufert hab ich mich auf die 4 spalten die in den tabellen abgefragt wedren beschränkt

    mir gehts um die verbesserung der sql abfrage da ich es für nicht sinvoll halte 3 mal die selbe abfrage hintereinander zu tätigen, wenn es auch ein mal geht

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    Ich verstehe weder den Sinn noch den Aufbau, aber wenn alle 3 Tabellen den selben Inhalt haben, wäre es eine Überlegung wert, einfach alle Datensätze auch eben in die selbe Tabelle zu packen und zur Unterscheidung eben ein extra Spalte einzuführen.

    Code:
    id, type (ENUM), name, vorname, strasse

    Einen Kommentar schreiben:

Lädt...
X