![]() |
Datenbank: ADS local • Version: 9 • Zugriff über: ADS
SQL ADS und ungleich
Hallo,
ich habe ein Problem mit einer SQL-Query:
SQL-Code:
diese funktioniert wie Sie soll!
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE PROJECTS_TO_CONTACTS.PROJECT_ID=4
SQL-Code:
Hier werden keine Datensätze angezeigt. Eigentlich sollten hier alle ankommen, welche mit der obigen Query
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE PROJECTS_TO_CONTACTS.PROJECT_ID<>4 nicht ausgespuckt werden. Viele Grüße ... |
Re: SQL ADS und ungleich
Versuch mal
SQL-Code:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE not PROJECTS_TO_CONTACTS.PROJECT_ID=4 |
Re: SQL ADS und ungleich
Hi,
kommt auch nix :? Viele Grüße ... |
Re: SQL ADS und ungleich
Es könnte auch am LEFT JOIN liegen und der Tatsache, das du nach der rechten Tabelle filterst.
Filtere mal nach der CONTACTS.ID |
Re: SQL ADS und ungleich
Hi,
ok das funktioniert, aber wie bekomme ich denn jetzt die Filterung nach PROJECTS_TO_CONTACTS.PROJECT_ID<>4. Unterabfrage? Viele Grüße .... |
Re: SQL ADS und ungleich
Da diese wegen der Join Bedingung identisch mit CONTACTS.ID ist kannst du diese in der WHERE-Clause durch CONTACTS.ID ersetzen
|
Re: SQL ADS und ungleich
Hi,
aber die Join Bedingung bezieht sich doch auf ein anderes Feld?!? Viele Grüße ... |
Re: SQL ADS und ungleich
Uch, da hab ich mich verguckt. :oops:
Es gibt solche Datensätze aber? |
Re: SQL ADS und ungleich
Hi,
ja gibt es :zwinker: Viele Grüße |
Re: SQL ADS und ungleich
Prüf mal, welche CONTACT_ID die Datensätze mit PROJECT_ID <> 4 haben, oder ersetze das 'LEFT JOIN' durch ein 'FULL JOIN'. Dann siehst Du, woran es hapert. Und wenn Du nix siehst, ist ADS für den A****.
|
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 ... |
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; |
Re: SQL ADS und ungleich
Hi,
funktioniert auch nicht .. Viele Grüße ... // Ich glaube er hat ein Problem mit leeren Werten?! :wall: |
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 |
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 .... |
Re: SQL ADS und ungleich
Zitat:
|
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:
Wie löse ich das denn?
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)) |
Re: SQL ADS und ungleich
Zitat:
|
Re: SQL ADS und ungleich
Zitat:
|
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:
Jetzt möchte ich alle CONTACTS, die nicht dem PROJECT 4 zugeordnet sind, oder 0 sind und auch nicht in dem
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE PROJECTS_TO_CONTACTS.PROJECT_ID=4 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:
Ich hoffe das war einigermaßen verständlich :?
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)) Viele Grüße ... |
Re: SQL ADS und ungleich
Zitat:
SQL-Code:
oder:
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((not (PROJECTS_TO_CONTACTS.PROJECT_ID=4)) OR (PROJECTS_TO_CONTACTS.PROJECT_ID IS NULL))
SQL-Code:
Der Vergleich auf <> funktioniert bei einigen Datenbanken nicht ordentlich, wenn von ihm auch Spalten mit Null-Werten betroffen sind.
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((PROJECTS_TO_CONTACTS.PROJECT_ID not in(4)) OR (PROJECTS_TO_CONTACTS.PROJECT_ID IS NULL)) Hast Du bei Deiner Datenbank eine IsNull- oder IfNull-Funktion? Dann könnte Dir auch sowas helfen:
SQL-Code:
Hoffe, dass ich Dein Problem verstanden habe und nicht jetzt den Lösungsansatz für ein anderes Problem liefere.
SELECT * FROM CONTACTS LEFT JOIN PROJECTS_TO_CONTACTS ON CONTACTS.ID = PROJECTS_TO_CONTACTS.CONTACT_ID
WHERE ((IsNull(PROJECTS_TO_CONTACTS.PROJECT_ID,-1) <> 4)) |
Re: SQL ADS und ungleich
Nur so als Idee:
Warum setzt du nicht PROJECT_ID auf default not null bzw. default -1 ? :hi: |
Re: SQL ADS und ungleich
Hallo,
ich zitier mich mal: Zitat:
Viele Grüße ... |
Re: SQL ADS und ungleich
Zitat:
SQL-Code:
select a.* from #contacts a
where a.id not in (select b.contact_id from #projects_to_contacts b where b.project_id=4 ) |
Re: SQL ADS und ungleich
Hallo Joachim,
ich bekommme da eine Fehlermeldung, das er die Tabelle nicht findet?: Zitat:
// Edit. Ich glaub so geht's:
SQL-Code:
select a.* from contacts as a
where a.id not in (select b.contact_id from projects_to_contacts as b where b.project_id=4 ) |
Re: SQL ADS und ungleich
Er hat wahrscheinlich die Testdaten in temporären Tabellen angelegt (Präfix #). ADS löscht solche Tabellen beim Schließen der DB-Connection automatisch.
|
Re: SQL ADS und ungleich
Hi,
Zitat:
:cheer: :dp: :cheer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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-2025 by Thomas Breitkreuz