Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage aus drei Tabellen mit <> werten? (https://www.delphipraxis.net/72149-sql-abfrage-aus-drei-tabellen-mit-werten.html)

Karstadt 26. Jun 2006 13:53

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

morri 26. Jun 2006 14:05

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

Karstadt 26. Jun 2006 14:21

Re: SQL Abfrage aus drei Tabellen mit <> werten?
 
...nun habe ich alle abteilungen... wie kriege ich nun keine abteilungen?

morri 26. Jun 2006 14:25

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...

Karstadt 26. Jun 2006 14:29

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)..

morri 26. Jun 2006 14:33

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

Karstadt 26. Jun 2006 14:55

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...

Karstadt 26. Jun 2006 15:31

Re: SQL Abfrage aus drei Tabellen mit <> werten?
 
..hat jemand eine Idee oder habe ich bei der Abfrage irgendwas nicht beachtet.

SQL-Code:
select * from TabelleB INNER JOIN TabelleC ON Abteilung_id=Abteilung_ID where Kundennr=10
Hier werden mir alle Abteilungen angezeigt, wo sich der Kunde befindet

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.

mkinzler 26. Jun 2006 15:49

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

Karstadt 26. Jun 2006 16:05

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

morri 27. Jun 2006 09:06

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.

Karstadt 27. Jun 2006 09:14

Re: SQL Abfrage aus drei Tabellen mit <> werten?
 
Guten Morgen.

Nun wo ich diese Abfrage gestartet habe:

SQL-Code:
select * from TabelleC where Abteilung_ID not in (select Abteilung_ID from TabelleB where Kundennr=10);
Bei diese Abfrage kann ich sogar mit EDIT und POST die Daten in einen Datensatz ändern. Bei Disctinct würde das nicht funktionieren.

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?

morri 27. Jun 2006 09:19

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