# MySql - Abfrage über 2 Tabellen



## Funky_MF (15. Oktober 2004)

Obwohl ich weiß, daß dieses Thema schön öfters behandelt wurde, habe ich doch keine entsprechende lösung bis jetzt gefunden, es geht um die Abfrage zweier Tabellen mit identische Spaltennamen.
Die beiden Tabellen heißen _cc_members_ und _cc_members_rev_
Folgende Abfrage :

```
$q = 'SELECT * FROM cc_members, cc_members_rev WHERE (m_email = \''.$PHP_AUTH_USER.'\') AND (m_pwd = \''.$PHP_AUTH_PW.'\')';
```
führt zu der MySql-Errormeldung "Column: 'm_email' in where clause is ambiguous"

ambiguous = unklar, zweideutig

Was mache ich falsch ?


----------



## melmager (15. Oktober 2004)

mach vor den Columnamen den tabellennamen dran mit punkt verbunden dann geht es 

z.b. 
cc_members.m_email


----------



## Funky_MF (15. Oktober 2004)

Wieso, die Spaltennamen sind doch in beiden Tabellen gleich und ich möchte ja beide Tabellen abfragen ?


----------



## redlama (15. Oktober 2004)

Aber woher soll MySQL das wissen?
MySQL sieht nur, dass Du in 2 Tabellen in der Spalte m_email nach einem Ergebnis sucht.
Welche Tabelle soll MySQL denn nun nehmen?
Wenn Du MySQL aber sagst cc_members.m_email = ... and cc_members_rev.m_email = ... dann weiß MySQL, dass es in beiden Tabellen in der Spalte m_email suchen soll.

redlama


----------



## Funky_MF (15. Oktober 2004)

Ich hab das jetzt mal folgendermaßen abgeändert, 

```
$q = 'SELECT * FROM cc_members, cc_members_rev WHERE (cc_members.m_email = \''.$PHP_AUTH_USER.'\' AND cc_members.m_pwd = \''.$PHP_AUTH_PW.'\')OR(cc_members_rev.m_email = \''.$PHP_AUTH_USER.'\' AND cc_members_rev.m_pwd = \''.$PHP_AUTH_PW.'\')';
```
Jetzt bekomme ich zwar keine MySql-Errormeldung mehr, aber die Abfrage als solche scheint nicht zu funktionieren, d.h. ich bekomme kein bzw. ein falsches Ergebnis zurück.


----------



## tanteanni (27. September 2007)

genau so eine abfrage benötige ich auch. ich hab 2 identische tabellen und will den inhalt beider tabellen anzeigen. also die folgenden abfragen in einer:
select * from tab1 where bedingung1
select * from tab2 where bedingung1

(also nicht nur die tabellen sind in meinem fall identisch sondern auch die filterbedingung)

habs: abfrage1 UNION abfrage2, die tabellen müssen nicht identisch sein, aber für order by muss man aliase vergeben und das is unpraktisch, da man dann nicht merh * verwenden kann.


----------

