Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

[MySQL] 2 Tabellen vergleichen...

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
JohnBi
PostRank 10
PostRank 10
Beiträge: 2957
Registriert: 22.02.2009, 20:31

Beitrag von JohnBi » 21.03.2009, 10:58

Ich habe 2 Tabellen nennen wir die mal

Tabelle1: email_kunden (id, email) (1000 Datensätze)
Tabelle2: email_no_kunden (id_no, email_no) (6000 Datensätze)

nun möchte ich das alle email_kunden Datensätze aus email_no_kunden herausgefiltert werden und mir nurnoch email_no_kunden angezeigt werden ohne email_kunden.

Ich hoffe ich hab mich verständlich ausgedrückt.

JohnBi
Probleme mit Google & Co.? Hier die Lösung! - Linktausch?! | Projekt kaufen?! |
-------------------------------------------
Der PostRank und das Anmeldedatum stehen in keinem Verhältnis zur Qualität der Antworten einiger User. {JohnBi, 2009}

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 21.03.2009, 11:00

Der Ansatz:

Code: Alles auswählen

select *
from email_no_kunden nk
where not exists (select * from email_kunden k where k.email = nk.email)

JohnBi
PostRank 10
PostRank 10
Beiträge: 2957
Registriert: 22.02.2009, 20:31

Beitrag von JohnBi » 21.03.2009, 11:02

ok, ich kann das im Moment nicht prüfen, aber vielen Dank für den Ansatz ... werde mich melden sobald ich das umsetzen muss ...
Probleme mit Google & Co.? Hier die Lösung! - Linktausch?! | Projekt kaufen?! |
-------------------------------------------
Der PostRank und das Anmeldedatum stehen in keinem Verhältnis zur Qualität der Antworten einiger User. {JohnBi, 2009}

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 21.03.2009, 19:12

JohnBi hat geschrieben:Tabelle1: email_kunden (id, email) (1000 Datensätze)
Tabelle2: email_no_kunden (id_no, email_no) (6000 Datensätze)

nun möchte ich, dass alle email_kunden-Datensätze aus email_no_kunden herausgefiltert werden und mir nurnoch email_no_kunden angezeigt werden ohne email_kunden.
Mit join:
select * from no_kunden left join kunden on no_kunden.email=kunden.email where kunden.email is null;

Ohne join (möglicherweise schneller):
select * from no_kunden where email not in (select email from b)

DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 21.03.2009, 19:15

Mork vom Ork hat geschrieben:Mit join:
select * from no_kunden left join kunden on no_kunden.email=kunden.email where kunden.email is null;

Ohne join (möglicherweise schneller):
select * from no_kunden where email not in (select email from b)
Zu der Performance der ersten Abfrage mit join kann ich nichts sagen.
Aber eine Abfrage mit "not in" braucht länger als eine entsprechende Abfrage mit "not exists" (zumindest mit MS SQL konnte ich diese Erfahrung machen, bei MySQL wird es nicht viel anders sein).

Mork vom Ork
PostRank 9
PostRank 9
Beiträge: 2557
Registriert: 08.07.2008, 11:07
Wohnort: Aufm Friedhof.

Beitrag von Mork vom Ork » 21.03.2009, 19:22

Das sollten auch nur Anregungen sein. Er kann ja mal alle drei ausmessen.

JohnBi
PostRank 10
PostRank 10
Beiträge: 2957
Registriert: 22.02.2009, 20:31

Beitrag von JohnBi » 21.03.2009, 19:30

Danke vielmals für eure Antworten, um die Perfomance geht es mir nicht, da es nur einmal gemacht werden muss. Werde mal alle 3 testen und euch dann berichten welche Top war.
Probleme mit Google & Co.? Hier die Lösung! - Linktausch?! | Projekt kaufen?! |
-------------------------------------------
Der PostRank und das Anmeldedatum stehen in keinem Verhältnis zur Qualität der Antworten einiger User. {JohnBi, 2009}

DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 21.03.2009, 19:40

Mork vom Ork hat geschrieben:Das sollten auch nur Anregungen sein. Er kann ja mal alle drei ausmessen.
Sollte auch keine Kritik sein. Wie gesagt, meine Aussagen beziehen sich eher auf MS SQL und außerdem führen viele Wege zum Ziel ;)

Anonymous

Beitrag von Anonymous » 21.03.2009, 22:43

DanielS hat geschrieben:Sollte auch keine Kritik sein. Wie gesagt, meine Aussagen beziehen sich eher auf MS SQL und außerdem führen viele Wege zum Ziel ;)
naja... wenn nicht mysql 5 oder neuer verwendet wird, führt nur der join zum ziel... die älteren Versionen unterstützen keine subquery... :wink:

auch kann man die Queryzeiten für einzelne Abfragen nicht zwischen komplett verschiedenen DB Systemen vergleichen.. selbst bei unterschiedlichen mysql Versionen gibt es dort teilweise beachtliche unterschiede...

DanielS
PostRank 9
PostRank 9
Beiträge: 1179
Registriert: 03.08.2008, 08:45

Beitrag von DanielS » 22.03.2009, 12:46

net(t)worker hat geschrieben:auch kann man die Queryzeiten für einzelne Abfragen nicht zwischen komplett verschiedenen DB Systemen vergleichen.. selbst bei unterschiedlichen mysql Versionen gibt es dort teilweise beachtliche unterschiede...
Deswegen ja auch meine Betonung auf "meine Aussagen beziehen sich eher auf MS SQL" ;)

JohnBi
PostRank 10
PostRank 10
Beiträge: 2957
Registriert: 22.02.2009, 20:31

Beitrag von JohnBi » 29.03.2009, 10:51

Mork vom Ork hat geschrieben: Mit join:
select * from no_kunden left join kunden on no_kunden.email=kunden.email where kunden.email is null;
Danke Mork, die Version hat super geklappt.
Probleme mit Google & Co.? Hier die Lösung! - Linktausch?! | Projekt kaufen?! |
-------------------------------------------
Der PostRank und das Anmeldedatum stehen in keinem Verhältnis zur Qualität der Antworten einiger User. {JohnBi, 2009}

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag