Announcement

Collapse
No announcement yet.

Anfrage über eine SQL Abfrage, die ich so nicht hin bekomme ;) (wahrscheinlich JOIN)

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

  • Anfrage über eine SQL Abfrage, die ich so nicht hin bekomme ;) (wahrscheinlich JOIN)

    Hallo werte Entwicklerinnen und Entwickler,

    jetzt ist meine erste Frage hier hoffentlich nicht all zu dämlich und ich erkenne die Lösung einfach nicht, aber seit 2 Tagen dokter ich an einem komplexeren Thema bzw. SQL Statement.

    Kurze Info: mySQL Server Version: 5.5.8, Apache und PHP (wird eine Webapp) (sollten weitere Daten benötigt werden, bitte angeben)

    Problemstellung:
    Es gibt 2 Varianten des Problems, wobei ich auf die 2. hinarbeiten möchte, aber zum Verständniss fange ich mit der einfachen Version an:
    1. Szenario
    - Tabelle1 mit ca. 30 Spalten, davon sind Spalte 5,6,7,8,9,10 als relevant zu betrachten für die 2. Tabelle
    - Tabelle2 mit 160 Spalten, wobei Spalte 2 als relevant zu Tabelle1 zu betrachten ist.

    Nun soll folgendes passieren:
    Ich erhalte aus Tabelle1 alle Spalten aufgrund von 2 Suchkriterien zurückgeliefert. Das Ergebnis ist IMMER nur 1 Datensatz (dies ist aufgrund der Logik so und es werden nie 2 oder mehr Sätze zurückgeliefert (vielleicht nicht wichtig, aber ich erwähne es mal)).
    In diesem Ergebniss sind nun die Spalten 5..10 enthalten, die jeweils einen Int darstellen.
    Gleichzeitig benötige ich aus Tabelle2 einen "internen" Bezeichner, sagen wir SpalteB, der sich über den selben Int Wert aus Tabelle1 eindeutig identifizieren lässt, sagen wir SpalteA.

    Nun hätte ich gerne 1 SQL Abfrage, die mir ALLE Spalten aus Tabelle1 zurückliefert + die zugehörigen Werte aus Tabelle2. Schaubildlich so dargestellt:

    Tab1.Spa1, Tab1.Spa2, Tab1.Spa3, Tab1.Spa4, Tab1.Spa5, Tab2.SpaB, Tab1.Spa6, Tab2.SpaB usw .. bis 10 hoch und dann natürlich die restlichen Spalten. Natürlich könnten die Werte aus Tab2 auch am Ende stehen, sollten aber eindeutig identifizierbar sein.

    2. Szenario
    Wie 1 nur um eine 3. Tabelle erweitert.
    In der dritten Tabelle gibt es nebem ca. 140 Spalten wieder 2 relevanten Spalten, nämlich den selben Bezeichner wie aus Tab2.SpaB sowie eine klaren Bezeichner (Tab3.SpaX) wie "Werkzeug". Damit müsste das Query entsprechend erweitert werden und das Ergebnis mit 1 Query sollte aussehen wie:

    .. Tab1.Spa4, Tab1.Spa5, Tab2.SpaB, Tab3.SpaX, Tab1.Spa6, Tab2.SpaB, Tab3.SpaX usw .. bis 10 hoch

    Vielleicht noch für das Verständnis:
    In Tabelle 1 befinden sich "Personen", die Material besitzen/benötigen (durch Spalte 5..10 angegeben).
    In Tabelle 2 befinden sich die Materialen mit einem ungewöhnlichen Identifizierer und weiteren immer gleichen Daten
    In Tabelle 3 ist u.a. die "lokale" Übersetzung/Bezeichnung des Materials vorhanden und weitere Daten.

    Leider ist es durch techn. Gegebenheiten nicht möglich, z.B. Tab2 und Tab3 zu vereinen, da diese auch einzeln "angeliefert" werden für Updates usw. Ausserdem kann sich jederzeit das Material von Tab 1 der Person ändern. Somit kann man keine (halb)statischen Tabellen erzeugen.

    Irgendwer eine Idee, ob und wie ich dies durch 1 SQL Query erzeugen könnte?

    Natürlich könnte ich dies durch PHP und mehrere Queries lösen, sehe dies jedoch nicht so performant wie ggf. 1 einzige Query des SQL Servers.

    Danke bereits,

    mfg
    micha

    EDIT: Eine Spalte von 5..10 aus Tab1 kann auch 0 sein und somit kein Ergebnis aus Tab2 bzw. Tab3 zurückliefern.

    EDIT2: Hab grade gesehen, ich hab in SQL und nicht mySQL geschrieben. Wenn nötig bitte moven. Danke
    Zuletzt editiert von sr972; 20.05.2011, 22:36.

  • #2
    Hallo,

    wie wärs wenn du mal die Struktur der Tabellen (natürlich nur die Relevante!) mit ein paar Beispieldaten und einem gewünschten Ergebniss angibst? Unter deiner Beschreibung kann sich doch keiner was vorstellen!

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment

    Working...
    X