Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL ADS und ungleich (https://www.delphipraxis.net/123457-sql-ads-und-ungleich.html)

Grolle 2. Nov 2008 16:49

Re: SQL ADS und ungleich
 
Hi,

wenn ich FULL JOIN benutze werden die Datensätze auch nicht ausgegeben. :cry:
Die CONTACT_ID's sind auch ok.

Viele Grüße ...

mkinzler 2. Nov 2008 16:54

Re: SQL ADS und ungleich
 
Versuch mal
SQL-Code:
SELECT * from ( SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID)
 WHERE not PROJECT_ID=4;

Grolle 2. Nov 2008 16:59

Re: SQL ADS und ungleich
 
Hi,

funktioniert auch nicht ..

Viele Grüße ...

// Ich glaube er hat ein Problem mit leeren Werten?! :wall:

Michael Habbe 2. Nov 2008 17:08

Re: SQL ADS und ungleich
 
Hi,

kannst Du mal ein paar Datensätze als Anhang bereitstellen?
Ich arbeite nun schon seit Jahren mit ADS, aber in Puncto SQL ist das immer noch nicht so richtig das Wahre :roll:


Ich erinner mich, dass ich das gleiche Problem auch schon hatte, kann aber im Moment nicht mehr sagen, wie ich es umschifft habe.


Michael



edit:

Diese dämlichen Datensätze mit Null-Werten werden immer weggelassen, da musst Du mit IFNULL(feld, ersatz) arbeiten. Siehe HILFEEEE

Grolle 2. Nov 2008 17:11

Re: SQL ADS und ungleich
 
Hi,

funzt jetzt. Ich habe nicht bedacht/beachtet/gewußt, dass ich die noch nicht ausgefüllten Felder (NULL)
extra mit abfragen muss.

Vielen Dank und viele Grüße ....

alzaimar 2. Nov 2008 17:31

Re: SQL ADS und ungleich
 
Zitat:

Zitat von alzaimar
Und wenn Du nix siehst, ist ADS für den A****.

q.e.d. Was ist das bloß für ein Schrottprodukt?

Grolle 2. Nov 2008 17:46

Re: SQL ADS und ungleich
 
Hi,

jetzt habe ich eine Sache noch nicht bedacht. Kontakte die die PROJECT_ID 4 haben, können auch weitere
PROJECT_ID's haben. Diese werden aber mit der Query auch ausgegeben (sollen Sie aber nicht).
SQL-Code:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((PROJECTS_TO_CONTACTS.PROJECT_ID<>4) or (PROJECTS_TO_CONTACTS.PROJECT_ID is null))
Wie löse ich das denn?

joachimd 3. Nov 2008 08:40

Re: SQL ADS und ungleich
 
Zitat:

Zitat von alzaimar
Zitat:

Zitat von alzaimar
Und wenn Du nix siehst, ist ADS für den A****.

q.e.d. Was ist das bloß für ein Schrottprodukt?

Eines, das sich genau in diesem Punkt an den SQL ANSI Standard hält!

joachimd 3. Nov 2008 08:42

Re: SQL ADS und ungleich
 
Zitat:

Zitat von Grolle
Hi,

jetzt habe ich eine Sache noch nicht bedacht. Kontakte die die PROJECT_ID 4 haben, können auch weitere
PROJECT_ID's haben. Diese werden aber mit der Query auch ausgegeben (sollen Sie aber nicht).
SQL-Code:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((PROJECTS_TO_CONTACTS.PROJECT_ID<>4) or (PROJECTS_TO_CONTACTS.PROJECT_ID is null))
Wie löse ich das denn?

Poste bitte mal die (Minimal-) Tabellenstruktur sowie ein paar Datensätze zusammen mit dem erwarteten Ergebnis.

Grolle 3. Nov 2008 10:56

Re: SQL ADS und ungleich
 
Hallo,

CONTACTS

id | name | first_name
--------------------------
1 | Muster | Stefan
2 | Test | Andrea
3 | Beispiel | Carsten
4 | Exemplar | Heidi

PROJECTS_TO_CONTACTS

id | contact_id | project_id
----------------------------
1 | 2 | 4
2 | 1 | 7
3 | 3 | 4
4 | 2 | 7
5 | 4 | 4

dann gibts noch eine PROJECTS-Tabelle, hier aber nicht relevant.

Mit der ersten Abfrage hole ich alle CONTACTS, die z. B. dem PROJECT 4 zugeordnet sind:
SQL-Code:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE PROJECTS_TO_CONTACTS.PROJECT_ID=4
Jetzt möchte ich alle CONTACTS, die nicht dem PROJECT 4 zugeordnet sind, oder 0 sind und auch nicht in dem
Ergebnis der ersten Abfrage auftauchen (das passiert in den obigen Tabellen z. B. mit CONTACT_ID 2. Dieser
ist mehreren Projekten zugeordnet). Bisher sieht die Abfrage da so aus:
SQL-Code:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((PROJECTS_TO_CONTACTS.PROJECT_ID<>4) OR (PROJECTS_TO_CONTACTS.PROJECT_ID IS NULL))
Ich hoffe das war einigermaßen verständlich :?

Viele Grüße ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
Seite 2 von 3     12 3      

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-2025 by Thomas Breitkreuz