online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon dwi vom 21.06.2022, 11:12 Options

Lösung

SQL-Abfrage für ähnliche Datensätze

Hallo,

ich habe zwei Tabellen: eine Kundentabelle mit Daten wie Vorname, Nachname, Straße, E-Mail usw sowei eine zweite Tabelle, die nur Einträge mit E-Mail-Teilen beinhaltet, also z.b. ist "gmx.de" ein Eintrag, aber auch ebenso "testvorname.testnachname" (ohne @ und Domain) ein Eintrag.

Ich möchte mir nun alle Kunden anzeigen lassen, deren E-Mail bzw. ein Teil Ihrer E-Mail einen Eintrag in der zweiten Tabelle hat.

Beispiel: Kunde 1 hat die E-Mail vorname.name@domain.com.
WEnn es jetzt in der zweiten Tabelle einen Eintrag "domain.com" gibt, oder einen Eintrag "vorname" oder einen Eintrag "vorname.name" etc...soll dieser Kunde in meiner SQL-Abfrage ausgewählt werden. WIe kann ich das am Besten machen? hatte es schon mit IN in der where-klausel versucht und ebenso mit LIKE...aber das führt alles nicht zum Ergebnis :-(

kann man das überhaupt sinnvoll lösen?

Eine weitere Abfrage, die ich mir wünschen würde, ist diese:
Wenn es zwei Kunden gibt, die eine gleiche E-Mail haben, möchte ich diese anzeigen lassen. Das soll dann aber für alle E-Mails gelten. das heißt, ich gebe vor der Abfrage nicht an, nach welcher E-Mail ich suche, sondern möchte mir einfach alle Dubletten anzeigen lassen. Ich hatte da schon irgendwie an Unterabfragen oder eventuell GROUP BY gedacht...aber wie ich das formulieren soll, weiß ich nicht.

Hoffe jemand kann mir helfen.

Gruß daniel


Antwort schreiben

Antwort 1 von son_quatsch vom 21.06.2022, 11:37 Options

Ich gehe jetzt mal davon aus, dass du von MySQL redest.

Warum lesen Leute nicht einfach Handbücher?
http://dev.mysql.com/doc/refman/5.5/en/select.html
http://dev.mysql.com/doc/refman/5.5/en/string-functions.html

Zeilen, bei denen Teiladresse in Gesamtadresse vorkommt:
SELECT * 
  FROM tabelle1 a INNER 
  JOIN tabelle2 b ON INSTR( a.gesamtadresse, b.teiladresse )> 0;


Zeilen, deren Adresse mehr als einmal vorkommt:
SELECT * 
  FROM tabelle
 GROUP BY adresse
HAVING count( adresse )> 1

Antwort 2 von dwi vom 21.06.2022, 16:52 Options

Hm, tatsächlich hatte ich diese beiden Seiten sogar auf... und auf INSTR bin ich auch schon gekommen. Das Problem ist aber ein anderes. In der Version wie du sie gespostet hast, bekomme ihc immer nur einen Datensatz angezeigt. Ist es damit auch möglich, alle Datensätze anzeigen zu lassen? Oder geht es nur, wenn ich wieder in einer Schleife mir die zugehörigen Datensätze in einer zweiten Abfrage hole?

Antwort 3 von son_quatsch vom 22.06.2022, 07:40 OptionsLösung

Lösung
Zitat:
Hm, tatsächlich hatte ich diese beiden Seiten sogar auf
Also geht es erstmal um MySQL.

Zitat:
In der Version wie du sie gespostet hast, bekomme ihc immer nur einen Datensatz angezeigt. Ist es damit auch möglich, alle Datensätze anzeigen zu lassen?
Damit meinst du sicher das zweite Statement.

Natürlich ist das möglich, z.B. mit einem SUBSELECT:
SELECT *
  FROM tabelle
 WHERE adresse IN(
    SELECT adresse
      FROM tabelle
     GROUP BY adresse
    HAVING count( adresse )> 1
       )
 ORDER BY adresse

Antwort 4 von dwi vom 22.06.2022, 10:38 Options

Danke, das hat mir weiter geholfen!

Ähnliche Themen

NP ähnliche Seite
Theresa123  05.02.2009 - 194 Hits - 21 Antworten

Zeige Datensätze 0 - 7 (8 insgesamt)
Uesch  07.02.2009 - 133 Hits - 2 Antworten

SQL Abfrage, doppelte Einträge
S1lv3R  30.06.2009 - 742 Hits - 6 Antworten

SQL Abfrage / Array
hsez  10.10.2009 - 453 Hits - 1 Antwort

Eine SQL-Abfrage oder mehrere?
wid  11.01.2010 - 241 Hits - 4 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026