![]() |
SQL-Statement vereinfachen
Hallo,
ich habe ein SQL-Statement bei welchem sich die Anwendung komplett aufhängt:
SQL-Code:
bei dem Subselect hängt er, ich vermute die DB muss da viel arbeiten.
select distinct(emailadresse) from freischaltungen where length(trim(emailadresse))>0 and produkt in ("P1","P2")and emailadresse not in(select emailadresse from freischaltungen where produkt not in ("P1","P2"))
Die Frage ist jetzt, wie vereinfach ich das am Besten? |
Re: SQL-Statement vereinfachen
Welches DBMS?
Versuch es mal mit einem Join BTw. Warum schreibst du nicht in der Datenbank-Sparte? |
Re: SQL-Statement vereinfachen
Zitat:
DBMS: MySQL. Ein Join? Wie sollte der hier aussehen? Also was ich eig erreichen will: Ich hab eine Tabelle mit Freischaltcodes in der unter anderem die Emailadresse und das Produkt drinstehn. Nun möchte ich alle Emailadressen die Produkt 1 und Produkt 2 haben, ausser denen die zusätzlich eines der anderen Produkte haben. |
Re: SQL-Statement vereinfachen
Evtl. so?
SQL-Code:
SELECT DISTINCT(A.emailadresse)
FROM freischaltungen A LEFT JOIN freischaltungen B ON B.emailadresse = A.emailadresse AND B.produkt NOT IN ("P1","P2") WHERE A.produkt IN ("P1","P2") AND B.emailadresse IS NULL |
Re: SQL-Statement vereinfachen
Ich hab jetzt so ein Statement mit join, welches mir allerdings gerademal ein siebtel der Ergebnisse der Abfrage von davor liefert :gruebel:
Ist jedoch deutlich schneller als die Abfrage zuvor.
SQL-Code:
select emailadresse from freischaltungen as f1 inner join freischaltungen as f2 on f2.emailadresse = f1.emailadresse where f1.id <> f2.id and f1.produkt in ("P1","P2") and f2.produkt not in("P1","P2")
|
Re: SQL-Statement vereinfachen
Zitat:
Also, wenn ich mich richtig irre, liefert dir dein join ganu die Sätze, die du NICHT haben willst. |
Re: SQL-Statement vereinfachen
ach deswegen sind das so wenig :lol:
hmm.. also meinen denkfehler seh ich.. aber wie ich das amche das ich das gewünschte Ergebnis bekomme weis ich grad trotzdem net.. |
Re: SQL-Statement vereinfachen
Schau mal
![]() |
Re: SQL-Statement vereinfachen
|
Re: SQL-Statement vereinfachen
Versuch es doch mal so...
SQL-Code:
Gruss
SELECT DISTINCT a.emailadresse
FROM freischaltungen a LEFT JOIN (SELECT DISTINCT emailadresse FROM freischaltungen WHERE produkt NOT IN ('P1', 'P2')) b ON a.emailadresse = b.emailadresse WHERE a.produkt IN ('P1', 'P2') AND b.emailadresse IS NULL Thorsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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