URL: https://www.overclockers.at/coding-stuff/access_tabellen_joinen_neues_problem_071128_188327/page_1 - zur Vollversion wechseln!
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
wie schaut das join statement aus?
kommt in den weiteren Tabellen jede Kundennummer nur einmal vor?
Dann wär mein Vorschlag ca so:
Code: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;
Zitat von Punisherkommt in den weiteren Tabellen jede Kundennummer nur einmal vor?
Dann wär mein Vorschlag ca so:Code: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;
Code: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;
Problem hat sich erledigt, schuld war die lustige und unlogische Klammernsetzung in MS SQL!
Und wo ist die Lösung?
Code: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"));
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?
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025