Access Tabellen joinen - Neues Problem 071128

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/access_tabellen_joinen_neues_problem_071128_188327/page_1 - zur Vollversion wechseln!


Flip schrieb am 26.11.2007 um 11:39

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


Nico schrieb am 26.11.2007 um 11:59

wie schaut das join statement aus?


Punisher schrieb am 26.11.2007 um 12:30

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;


Flip schrieb am 26.11.2007 um 13:11

Zitat von Punisher
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;

danke für die hilfe, das hab ich schon probier, das statement sieht so aus:

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;

da krieg ich den fehler "syntax error(missing operator) in query expression"


Flip schrieb am 27.11.2007 um 07:24

Problem hat sich erledigt, schuld war die lustige und unlogische Klammernsetzung in MS SQL!


that schrieb am 27.11.2007 um 09:39

Und wo ist die Lösung?


Flip schrieb am 27.11.2007 um 09:52

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"));

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 schrieb am 28.11.2007 um 10:52

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