SQL: Join auf Basis eines Start- und Endwerts aus der gejointen Tabelle

Saugkraft

Saugkraft

Aktives Mitglied
Thread Starter
Dabei seit
20.02.2005
Beiträge
9.022
Reaktionspunkte
3.189
Hallo liebe Mitstreiter,

ich stehe vor einem mehr oder weniger komplexen SQL Probem.

Ich habe Tabelle A:
Code:
id     Wert
1      Banane
2      Apfel
3      Kartoffel
4      Lauch

Und Tabelle B:
Code:
id     Art     Start_id   Ende_id
1      Obst    1          2
2      Gemüse  3          4

Ich möchte nun beispielsweise alle Obstsorten aus Tabelle A auslesen. Basis ist Tabelle B, in ja sinngemäß hinterlegt ist: Obst beginnt bei TabelleA.id = 1 und endet bei TabelleB.id = 2.

Das kann ich in PHP in zwei Schritten realisieren:
select start_id, ende_id from tabelleB where art like 'Obst';

Danach:
select wert from tabelleA where id >= $start_id and id <= $ende_id;

Soweit so leicht.

Ich hätte das aber gerne in einem(!) SQL Statement. D.h. sinngemäß: Selektiere aus Tabelle A alle Werte, die zwischen start_id und ende_id aus Tabelle B liegen.

Hat da jemand eine Idee?

Am liebsten in einem niederen SQL Dialekt wie T-SQL. :D
 
Falls du nur das PHP dabei los werden willst, in etwa so:
select wert from tabelleA where id between (select start_id from tabelleB where art like 'Obst') and (select ende_id from tabelleB where art like 'Obst');
 
  • Gefällt mir
Reaktionen: wegus
Falls du nur das PHP dabei los werden willst, in etwa so:
select wert from tabelleA where id between (select start_id from tabelleB where art like 'Obst') and (select ende_id from tabelleB where art like 'Obst');
Und danach den Datenbank-Designer verhauen :D
 
  • Gefällt mir
Reaktionen: wegus
Ich wollt's nicht schreiben ... aber ja ... :D:D:D
 
  • Gefällt mir
Reaktionen: wegus
Für heute bist du mein persönlicher SQL Gott! Fluppt hervorragend. Tausend Dank.

Das PHP muss ich im Grunde nicht loswerden, geht ja auch auf dem "umständlichen" Weg.

Ist aber letztlich eine Abfrage/Schleife mehr. Mit der reinen SQL-Lösung hab ich auch den Vorteil, dass ich es in eine Stored Procedure packen kann. Hat auch wieder diverse Vorteile.

Der DB-Designer.. Naja.. Ich nehme noch Bewerbungen entgegen. :hehehe:

Unserer ist ein bisschen minimalistisch und "übernormalisiert" das Ganze, aber ich finde, er hat gut abgeliefert

("Obst" ist übrigens ein numerischer Fremdschlüssel. Kein Text. Ich war nur zu faul, die restlichen Beziehungen auch noch aufzuschreiben.)

Wenn mein DB-Designer mich zwingen würde, mit like zu arbeiten, dann hätte ich ihm schon den Server um die Ohren geschlagen. Physisch. Nicht virtuell. :hehehe:
 
Freut mich, dass ich helfen konnte.:)

Wenn mein DB-Designer mich zwingen würde, mit like zu arbeiten, dann hätte ich ihm schon den Server um die Ohren geschlagen. Physisch. Nicht virtuell. :hehehe:
Klarer Vorteil von Nicht-Cloud-Servern! :hehehe:
 
  • Gefällt mir
Reaktionen: wegus
Zurück
Oben Unten