![]() |
Datenbank: Mysql • Version: 4.1 • Zugriff über: MYDAC
SQL Abfrage aus drei Tabellen mit <> werten?
Hallo
Ich habe zwei Tabellen. Tabelle A: Kundennr Ort PLZ Stadt Adresse Tabelle B: Kundennr Abteilung_id Tabelle C: Abteilung_ID Abeilung Notiz etc... Nun will ich mit eine Abfrage rausfinden in welche Abteilung sich der Kunde (kunden_nr 10) befindet und in welche der sich nicht befindet. zugegeben Beispiel ist etwas doof.. aber die fragestellung ist richtig. Kann mir bitte helfen. Danke |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Ich denke dir hilf ein INNER JOIN:
SQL-Statement:
Delphi-Quellcode:
select * from TabelleB INNER JOIN TabelleC ON Abteilung_id=Abteilung_ID where Kundennr=10
|
Re: SQL Abfrage aus drei Tabellen mit <> werten?
...nun habe ich alle abteilungen... wie kriege ich nun keine abteilungen?
|
Re: SQL Abfrage aus drei Tabellen mit <> werten?
??
nun müsstest du alle Abteilungen haben, wo der Kunde ist. Die anderen erreichst du, indem du das = durch ein <> ersetzt. Bitte versuche dich mal etwas klarer auszudrücken... |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
..Nun will ich wissen in welchen Abteilungen der Kunde nicht befindet.
select * from TabelleB INNER JOIN TabelleC ON Abteilung_id<>Abteilung_ID where Kundennr=10 (Es werden einigen Abteilungen mehrmal anzegeigt).. |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Kannst du dir nicht mal bitte selber ein paar sql-Befehle raussuchen?
Delphi-Quellcode:
Select Distinct * from TabelleB INNER JOIN TabelleC ON Abteilungs_id=Abteilungs_ID Where Kundennr<>10
|
Re: SQL Abfrage aus drei Tabellen mit <> werten?
das habe ich auch ausprobiert (bevor ich den letzte posting abgebegen habe). In diesen Fall werden gar keine Datensätze angezeigt.
HIER select * from TabelleB INNER JOIN TabelleC ON Abteilung_id<>Abteilung_ID where Kundennr=10 (Es werden einigen Abteilungen mehrmal anzegeigt) auch die Datensätze wo sich der kunde befindet... |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
..hat jemand eine Idee oder habe ich bei der Abfrage irgendwas nicht beachtet.
SQL-Code:
Hier werden mir alle Abteilungen angezeigt, wo sich der Kunde befindet
select * from TabelleB INNER JOIN TabelleC ON Abteilung_id=Abteilung_ID where Kundennr=10
Nun benötige ich das gegenstück. Alle Abteilungen, wo sich der Kunde nicht befindet. .. Ich habe insgesamt 3 Abteilungen in zwei davon befindet sich der Kunde, also muss eine Abteilung übrig bleiben... ich habe die Abfrgagen von morri ausprobiert. damit kriebe ich aber nicht den gewünschten ergebniss. |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Ich würde die Abfrage von der anderen seir aufziehen, also alle Abteilungen für den keine Zuordnung zu dem Kunden besteht.
SQL-Code:
select * from TabelleC where Abteilung_ID not in (select Abteilung_ID from TabelleB where Kundennr=10);
|
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Das ist die Lösung! Danke. Warum diese Abfrage nicht funktioniert hat. Das weis ich echt nicht.
SQL-Code:
Select Distinct * from TabelleB INNER JOIN TabelleC ON Abteilungs_id=Abteilungs_ID Where Kundennr<>10
|
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Sehr seltsam. Bei meiner DB macht er das ohne Zicken.
Aber die verschachtelte Abfrage geht natürlich auch sehr gut. |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Guten Morgen.
Nun wo ich diese Abfrage gestartet habe:
SQL-Code:
Bei diese Abfrage kann ich sogar mit EDIT und POST die Daten in einen Datensatz ändern. Bei Disctinct würde das nicht funktionieren.
select * from TabelleC where Abteilung_ID not in (select Abteilung_ID from TabelleB where Kundennr=10);
PS: Ist das überhaupt empfehlenswert die Daten per EDIT und POST über so eine Afrage zu ändern. (z.B Abteilungsdaten ändern). Bzw. Was kann daneben gehen? |
Re: SQL Abfrage aus drei Tabellen mit <> werten?
Also ich persönlich würde auf jeden Fall mit Querys arbeiten!
Nicht mehr mit Tables. Die können je nach Größe der DB zum Flaschenhals werden. Lieber vernünftige Sql-Statements in querys mit insert, delete usw. Dann klappt auch die Anfrage von oben normalerweise. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz