Mysql 4.0 ohne subselects, select über zwei tabellen

Mysql 4.0 ohne subselects, select über zwei tabellen

am 08.11.2006 20:40:36 von Thomas B

Hallo zusammen
Habe gemerkt, dass die Abfrage wohl doch nicht so simpel ist wie es
scheint
und hoffe bin hier richtig;-)

habe zwei tabellen.

table1
Clientid spalte1
1 A
2 A
3 B

table2
Clientid spalte1 spalte2
1 A A
1 A B
1 B A
2 A B
2 B A
3 A A
3 B A

versuche nun verzeifelt nur Clientid's welche in der table1,spalte1 ein
A haben und in table2 mit korrespondierender id KEINE Zeile mit A A
existiert

obs nun (SELECT table1.Clientid)
oder (SELECT DISTINCT table2.clientid) ist, ist mir dann auch wurst :-)
resultat wäre Clientid 2

thanx
inc.

Re: Mysql 4.0 ohne subselects, select überzwei

am 08.11.2006 21:43:55 von NOSPAM_newsgroups

Hi

incogni@gmx.de schrieb:
> =

> Hallo zusammen
> Habe gemerkt, dass die Abfrage wohl doch nicht so simpel ist wie es
> scheint
> und hoffe bin hier richtig;-)
> =

> habe zwei tabellen.
> =

> table1
> Clientid spalte1
> 1 A
> 2 A
> 3 B
> =

> table2
> Clientid spalte1 spalte2
> 1 A A
> 1 A B
> 1 B A
> 2 A B
> 2 B A
> 3 A A
> 3 B A
> =

> versuche nun verzeifelt nur Clientid's welche in der table1,spalte1 ein=

> A haben und in table2 mit korrespondierender id KEINE Zeile mit A A
> existiert
> =

> obs nun (SELECT table1.Clientid)
> oder (SELECT DISTINCT table2.clientid) ist, ist mir dann auch wurst :-)=

> resultat wäre Clientid 2

Ungetestet:

select from table1 inner join table2
on table1.id=3Dtable2.id where table1.spalte1=3D'A'
and concat(table2.spalte1,table2.spalte2)!=3D'AA'
=

Wenn null-werte vorkommen concat_ws

hth n.Olivier
-- =

Nachbagauer Olivier - www.nOlivier.com
www.reedb.com - Immobilien national & international =

Webportal der Immobilien-Branche - www.Immofinder.de

Re: Mysql 4.0 ohne subselects, select über zwei tabellen

am 08.11.2006 22:09:03 von dnoeth

incogni@gmx.de wrote:

> table1
> Clientid spalte1
> 1 A
> 2 A
> 3 B
>
> table2
> Clientid spalte1 spalte2
> 1 A A
> 1 A B
> 1 B A
> 2 A B
> 2 B A
> 3 A A
> 3 B A
>
> versuche nun verzeifelt nur Clientid's welche in der table1,spalte1 ein
> A haben und in table2 mit korrespondierender id KEINE Zeile mit A A
> existiert

Such die, die du nicht möchtest und filtere dann auf NULLs:

select t1.*
from table1 as t1 left join table2 as t2
on t1.clientid = t2.clientid
and t2.spalte1 = 'A'
and t2.spalte2 = 'A'
where t1.spalte1 = 'A'
and t2.clientid is null

Dieter

Re: Mysql 4.0 ohne subselects, select überzwei tabellen

am 08.11.2006 22:11:24 von Joachim Zobel

Am Wed, 08 Nov 2006 11:40:36 -0800 schrieb incogni:

> Hallo zusammen
> Habe gemerkt, dass die Abfrage wohl doch nicht so simpel ist wie es
> scheint
> und hoffe bin hier richtig;-)
>
> habe zwei tabellen.
>
> table1
> Clientid spalte1
> 1 A
> 2 A
> 3 B
>
> table2
> Clientid spalte1 spalte2
> 1 A A
> 1 A B
> 1 B A
> 2 A B
> 2 B A
> 3 A A
> 3 B A
>
> versuche nun verzeifelt nur Clientid's welche in der table1,spalte1 ein
> A haben und in table2 mit korrespondierender id KEINE Zeile mit A A
> existiert

Aaaah. Wieder einmal ein Fall für Left Join, den Superhelden.

SELECT t1.clientid
FROM table1 t1 LEFT JOIN table2 t2
ON t1.clientid=t2.clientid
AND t2.spalte1 = 'A'
AND t2.spalte2 = 'A'
WHERE t1.spalte1 = 'A'
AND t2.clientid IS NULL

sollte es (ungetestet) tun.

Gruß,
Joachim

Re: Mysql 4.0 ohne subselects, select über zwei tabellen

am 08.11.2006 23:14:21 von Thomas B

Genau so muss Sie sein...die query
Das war liebe auf den ersten Blick...habs aber trotzdem noch kurz
getestet:-)

Vielen herzlich Dank!

Re: Mysql 4.0 ohne subselects, select über zwei tabellen

am 09.11.2006 08:44:16 von dnoeth

Joachim Zobel wrote:

> SELECT t1.clientid
> FROM table1 t1 LEFT JOIN table2 t2
> ON t1.clientid=t2.clientid
> AND t2.spalte1 = 'A'
> AND t2.spalte2 = 'A'
> WHERE t1.spalte1 = 'A'
> AND t2.clientid IS NULL

Zwei Doofe, ein Gedanke ;-)

Dieter

Re: Mysql 4.0 ohne subselects, select überzwei tabellen

am 09.11.2006 22:28:52 von Joachim Zobel

Am Thu, 09 Nov 2006 08:44:16 +0100 schrieb Dieter Noeth:

> Zwei Doofe, ein Gedanke ;-)

Das faszinierende ist die (bis auf case und Feldliste) 100%ige
Übereinstimmung.

Gruß,
Joachim