Flip
1 x 4 Ringe
|
Hello Coder, folgendes Problem:
Ich habe eine Tabelle wo sagen wir Kundennummern drinnenstehen und 5 weitere Tabellen, wo diese Kundennummern vereinzelt drinnen stehen.
Nun will ich mir eine Abfrage bauen, die überprüft, welche von den Kundennummern in den 5 weiteren Tabellen aufscheint und falls diese aufscheint mir bestimmte Felder aus diesen Tabellen anzeigt.
Fürs Verständnis:
Tabelle1: Kundennummern
Tabelle2: Kundennummern SummeAusgaben SummeEinnahmen
Tabelle3: Kundennummern RatingHistory LastRating
usw ....
Es kann auch sein, dass eine Kundennummer in mehreren von den 5 weiteren Tabellen aufscheint, wie mache ich das nun am Besten, bei den JOINs zeigt er mir gar nichts an und wenn ichs einfach mit
select feld1, feld2, feld3 from tabelle1, tabelle2, tabelle3 where tabelle1.KuNr = tabelle2.KuNr or tabelle1.KuNr = tabelle3.KuNr
zeigt er mir auch nix an...
tia
Bearbeitet von Flip am 28.11.2007, 10:50
|
Nico
former person of interest
|
wie schaut das join statement aus?
|
Punisher
Bukanier
|
kommt in den weiteren Tabellen jede Kundennummer nur einmal vor? Dann wär mein Vorschlag ca so: SELECT Kundennummern.kdnr, Tabelle1.SummeAusgaben,
Tabelle2.LastRating, Tabelle3.RatingHistory
FROM Kundennummern
INNER JOIN Tabelle1 ON Kundennummern.kdnr = Tabelle1.kdnr
INNER JOIN Tabelle2 ON Kundennummern.kdnr = Tabelle2.kdnr
INNER JOIN Tabelle3 ON Kundennummern.kdnr = Tabelle3.kdnr;
|
Flip
1 x 4 Ringe
|
kommt in den weiteren Tabellen jede Kundennummer nur einmal vor?
Dann wär mein Vorschlag ca so:
SELECT Kundennummern.kdnr, Tabelle1.SummeAusgaben,
Tabelle2.LastRating, Tabelle3.RatingHistory
FROM Kundennummern
INNER JOIN Tabelle1 ON Kundennummern.kdnr = Tabelle1.kdnr
INNER JOIN Tabelle2 ON Kundennummern.kdnr = Tabelle2.kdnr
INNER JOIN Tabelle3 ON Kundennummern.kdnr = Tabelle3.kdnr;
danke für die hilfe, das hab ich schon probier, das statement sieht so aus: SELECT ALL_ALL_CCN.ALL_ALL_CCN, ALFI_TUE_TRE.ALFI_TUE_SUMSG, GKE.GKE_DATE
FROM ALL_ALL_CCN
INNER JOIN ALFI_TUE_TRE ON ALL_ALL_CCN.ALL_ALL_CCN = ALFI_TUE_TRE.ALFI_CCN
INNER JOIN GKE.GKE_DATE ON ALL_ALL_CCN.ALL_ALL_CCN = GKE.GKE_CCN;
da krieg ich den fehler "syntax error(missing operator) in query expression"
|
Flip
1 x 4 Ringe
|
Problem hat sich erledigt, schuld war die lustige und unlogische Klammernsetzung in MS SQL!
|
that
Hoffnungsloser Optimist
|
Und wo ist die Lösung?
|
Flip
1 x 4 Ringe
|
SELECT [3ALL_CCN_DO_NOT_USE].ALL_CCN, [9ALFI].ALFI_TUE_SUMSG, [9ALFI].ALFI_TRE_SUMSG, [9FERMAT].FERMAT_DATE, [9GKE].GKE_DATE, [9RLB_NO_DOUBLE].RLB_RLB, [9TIGER].TGR_NAME, [9TIGER].TGR_ISO_CTRY, [9TIGER].TGR_RELATION, [9TIGER].TGR_CTYPE, [9TIGER].TGR_CTYPE_CODE, [9TIGER].TGR_ISO_CTRY_HELP, [9RESP].CTRY_ANALY, [9RESP].CTRY_SHORT, [9RDB].RDB_AGE_ED, [9RDB].RDB_EDIT_DL, [9RDB].RDB_AGE_RLS, [9RDB].RDB_RATING_DATE, [9RDB].RDB_EQUITY, [9RDB].RDB_RATING2002, [9RDB].RDB_RATING2003, [9RDB].RDB_RATING2004, [9RDB].RDB_RATING2005, [9RDB].RDB_RATING2006
FROM ((((((3ALL_CCN_DO_NOT_USE
LEFT JOIN 9ALFI ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9ALFI].ALFI_CCN)
LEFT JOIN 9FERMAT ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9FERMAT].FERMAT_CCN)
LEFT JOIN 9GKE ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9GKE].GKE_CCN)
LEFT JOIN 9RLB_NO_DOUBLE ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9RLB_NO_DOUBLE].RLB_CCN)
LEFT JOIN 9TIGER ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9TIGER].TGR_CCN)
LEFT JOIN 9RDB ON [3ALL_CCN_DO_NOT_USE].ALL_CCN = [9RDB].RDB_CCN)
LEFT JOIN 9RESP ON [9TIGER].TGR_ISO_CTRY = [9RESP].CTRY_ISO OR [9TIGER].TGR_ISO_CTRY_HELP = [9RESP].CTRY_ISO
WHERE ((([9TIGER].TGR_ISO_CTRY_HELP)="11" Or ([9TIGER].TGR_ISO_CTRY_HELP)="12" Or ([9TIGER].TGR_ISO_CTRY_HELP)="23" Or ([9TIGER].TGR_ISO_CTRY_HELP)="24" Or ([9TIGER].TGR_ISO_CTRY_HELP)="25" Or ([9TIGER].TGR_ISO_CTRY_HELP)="26" Or ([9TIGER].TGR_ISO_CTRY_HELP)="27" Or ([9TIGER].TGR_ISO_CTRY_HELP)="30" Or ([9TIGER].TGR_ISO_CTRY_HELP)="31" Or ([9TIGER].TGR_ISO_CTRY_HELP)="32" Or ([9TIGER].TGR_ISO_CTRY_HELP)="34" Or ([9TIGER].TGR_ISO_CTRY_HELP)="37" Or ([9TIGER].TGR_ISO_CTRY_HELP)="42" Or ([9TIGER].TGR_ISO_CTRY_HELP)="53" Or ([9TIGER].TGR_ISO_CTRY_HELP)="56" Or ([9TIGER].TGR_ISO_CTRY_HELP)="57" Or ([9TIGER].TGR_ISO_CTRY_HELP)="AT23" Or ([9TIGER].TGR_ISO_CTRY_HELP)="AT24" Or ([9TIGER].TGR_ISO_CTRY_HELP)="XX23" Or ([9TIGER].TGR_ISO_CTRY_HELP)="XX24" Or ([9TIGER].TGR_ISO_CTRY_HELP)="XX27" Or ([9TIGER].TGR_ISO_CTRY_HELP)="XX26" Or ([9TIGER].TGR_ISO_CTRY_HELP)="XX57"));
werds aber mit vb ausprogrammieren, weil ich dann doch noch viel händisch ändern muss wenn ich mir das via sql statement raushol. im vb ausprogrammieren hätte einfach zu lang gedauert, da ich am freitag ein paar listen bekommen hab und mir dann gesagt wurde, wir hätten als report das das und das....
|
Flip
1 x 4 Ringe
|
Ich hole mir 4 Felder aus der DB mit verschiedenen Daten (ist das die Mehrzahl von Datum?) und will diese Felder untereinander vergleichen und das nächstgelegene Datum in ein neues Temporary Feld schreiben.
Mit MIN(expr) kann ich ja nur eine Spalte vergleichen, ich muss aber 4 Felder in einer Zeile vergleichen und das nächstgelegene weitergeben!
Any ideas?
|