Einzelnen Beitrag anzeigen

Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Zirkuläre Referenz erkennen

  Alt 14. Okt 2003, 20:09
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?
Tim Leuschner
  Mit Zitat antworten Zitat