Selekt Problem auf Oracle 9i

cemiboy

Mitglied
Hallo meine Frage:

Habe 2 Tabellen einmal Tabelle wo Hauptprodukt drin ist und einmal Tabelle wo Fix und Def Optionen drin sind...

So möchte nun mit meinem Cursor diese Selektieren aber es t net:confused:
Es muss erst das Hauptprodukt und danach die dazu gehörigen Optionen anzeigen tut aber net ich bekomm immer nur Optionen ohne Hauptprodukt angezeigt......
 
Zuletzt bearbeitet:
Erklär mal bitte etwas genauer, was du eigentlich möchtest.

Warum machst du einen UNION?
Warum joinst du im ersten Teil nicht und im zweiten Teil schon?
Gib mal pro Tabelle 2 Beispiel-Datensätze an.
Wie soll dein Wunsch-Ergebnis aussehen?
 
Naja, so wirklich verständlich ist es noch nicht...

Und du bist dir im klaren darüber, was für Probleme das Referenzieren über den Produktnamen noch verursachen kann?

Ansonsten würde ich jetzt mal spontan das vorschlagen (Bezeichnungen müssen noch angepasst werden):

SQL:
select
 <felder von produkt>,
 <felder von optionen>
from <produkt>, outer(<optionen>)
where <produkt_schlüssel> = <optionen_schlüssel>
 
Will einfach nicht klappen ......:confused:
Ist das eigentlich so schwer oder ich so blöd (Bitte darauf nicht Antworten:suspekt:)

Naja ich versuch meine Frage nochmals zu Formulieren!

Ich habe ein Produkt in einer Tabelle das ich selektieren möchte. Dann möchte ich überprüfen ob´s unter dem Produktnamen auch Optionen in der Tabelle2 vorhanden sind.
Was für mich wichtig ist das mein Cursor diese alle selektiert.

So das die select-ausgabe so aussieht.

SID---SQ----Prod_name---Opt_Flag----Referer-.....
123----1------Pc/intel/cel------------------------------- aus Produkttabelle
123----2------Netzteilopt--------F---------------1----- aus der optionstabelle
123----3------Kühleropt----------F---------------1----- aus der optionstabelle
usw......
 
Ahaaaaa :)
Jetzt versteh ich :p

Also zwei Punkte zum Datenbank-Design:
1. Wie schon gesagt, den Produktnamen solltest du nicht als ID verwenden.
2. Es wäre sauberer wenn du die Tabellen anders darstellen würdest:

Tabelle 1: Produkte
Tabelle 2: Produkt ist Bestandteil von

So dass grundsätzlich alles was man kaufen kann in Tabelle 1 steht - und die Zuordnung, was zu wem optional oder zwingend gehört, das wird anhand der ID's mit weiteren Feldern in der Tabelle 2 gemacht. (So kannst du z.B. vorgeben, dass ein Kühler für Rechner 1 optional, für Rechner 2 zwingend erforderlich ist.)

Zu deinem Problem, bei deinem derzeitigen Design kannst du das nicht mit einem einfachen Select machen. Du musst in jedem Fall zwischenspeichern:

SQL:
select <produktspalten> from <produkte> into temp temp_p;

select * from temp_p
UNION
select <optionsspalten> from <optionen> where <options-Id> in (
 select <produktid> from temp_p
);

drop table temp_p;
 
Vielen Dank habe mal nach meinen Daten umgebaut hoffe es passt so :)

SELECT prod_name FROM t_pdz_product_diff where prod_name='LYSRV-TI1SSD' INTO temp temp_p;

SELECT * FROM temp_p
UNION
SELECT prod_name,opt_name,opt_class
FROM t_must_opt
WHERE prod_name IN ( SELECT prod_name FROM temp_p)
and opt_class in('DEF', 'FIX');

DROP TABLE temp_p;
 
Mir fällt grade auf da ich das für eine Prozedur brauche ist das dann überhaupt realisierbar?

Möchte ja den Select nur für mein cursor damit er später mein warenkorb-tabelle damit füllt.

Man ich hab mich da auf was eingelassen....
Wäre es meine eigene Datenbank hätte ich schon längst paar Änderungen gemacht nur Kunde erlaubt dies nicht:suspekt:
 
Zurück