AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Statement vereinfachen

Ein Thema von Angel4585 · begonnen am 9. Jun 2008 · letzter Beitrag vom 11. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

SQL-Statement vereinfachen

  Alt 9. Jun 2008, 12:59
Hallo,

ich habe ein SQL-Statement bei welchem sich die Anwendung komplett aufhängt:

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")) bei dem Subselect hängt er, ich vermute die DB muss da viel arbeiten.
Die Frage ist jetzt, wie vereinfach ich das am Besten?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:05
Welches DBMS?
Versuch es mal mit einem Join
BTw. Warum schreibst du nicht in der Datenbank-Sparte?
Markus Kinzler
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:07
Zitat von mkinzler:
BTw. Warum schreibst du nicht in der Datenbank-Sparte?
Huch dachte ich hätts dort gepostet

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.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:19
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:28
Ich hab jetzt so ein Statement mit join, welches mir allerdings gerademal ein siebtel der Ergebnisse der Abfrage von davor liefert
Ist jedoch deutlich schneller als die Abfrage zuvor.

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")
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#6

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:35
Zitat von Angel4585:
Ich hab jetzt so ein Statement mit join, welches mir allerdings gerademal ein siebtel der Ergebnisse der Abfrage von davor liefert
Ist jedoch deutlich schneller als die Abfrage zuvor.

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

Also, wenn ich mich richtig irre, liefert dir dein join ganu die Sätze, die du NICHT haben willst.
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:41
ach deswegen sind das so wenig
hmm.. also meinen denkfehler seh ich.. aber wie ich das amche das ich das gewünschte Ergebnis bekomme weis ich grad trotzdem net..
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 13:58
Schau mal hier.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: SQL-Statement vereinfachen

  Alt 9. Jun 2008, 14:04
Oder http://www.bitbybit.dk/carsten/blog/?p=71
Markus Kinzler
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: SQL-Statement vereinfachen

  Alt 10. Jun 2008, 01:24
Versuch es doch mal so...

SQL-Code:
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
Gruss
Thorsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz