wenn es also um das Zusammenstellen von Produktpaketen geht, epfehle ich folgende
Tabellenstruktur & referenzielle Integritäten:
SQL-Code:
+-----------------------+
|Table Produkte_Pakete | +------------------+
+------------------+ +-------------------+---+ |Table Pakete |
|Table Produkte | |idProdukte_Pakete |i | +--------------+---+
+--------------+---+ |idPaket |i |----->|idPaket |i |
|idProdukt |i |<-----|idProdukt |i | |... | |
|... | | |Aktiv |L | +--------------+---+
+--------------+---+ +-------------------+---+
aktuelle PaketInhalte erhältst Du mit:
SQL-Code:
select PR.*
from Pakete PA
inner join Produkte_Pakete PP
on PP.idPaket = PA.idPaket
and PP.Aktiv =
TRUE -- oder wie auch immer der Wert für
-- Logisch wahr in Paradox ist
inner join Produkte PR
on PR.idProdukt = PP.idProdukt
where PA.idPaket = :IdPaket
-- Id des gewünschten Paketes
nicht im Paket enthaltene Produkte (um sie z.B. dem Paket hinzuzufügen)
bekommst Du mit:
SQL-Code:
select *
from Produkte
where idProdukt not in (select distinct PP.idProdukt
from Pakete PA
inner join Produkte_Pakete PP
on PP.idPaket = PA.idPaket
and PP.Aktiv = 1
where PA.idPaket = :IdPaket) -- Id des gewünschten Paketes
gruß Tim
Edit1: Tabellendarstellung war mist
Edit2: 2.SQL-Statement war noch größerer Mist
Edit3: macht
Paradox unterabfragen (wie im 2.
SQL-Statement) mit?