1.7k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
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

4 Antworten

0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Ich gehe jetzt mal davon aus, dass du von MySQL redest.

Warum lesen Leute nicht einfach Handbücher?
dev.mysql.com/doc/refman/5.5/en/select.html
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
0 Punkte
Beantwortet von
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?
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Hm, tatsächlich hatte ich diese beiden Seiten sogar auf
Also geht es erstmal um MySQL.

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
0 Punkte
Beantwortet von
Danke, das hat mir weiter geholfen!
...