Christian Seiler: Gleiche Spalte mit zwei verschiedenen WHERE's abfragen

Beitrag lesen

Hallo LinuxUser,

Gescheitert bin ich an der Anordnung der "AS"-s. Wenn ich diese an den Anfang der Abfrage setze, bspw. "SELECT users.username AS a, users.username AS b ...", dann erhalte ich zwar zweimal den Namen, jedoch zweimal den gleichen. Um nun die unterschiedlichen Namen zu erhaten, müssen a und b nun auch noch hinter die WHERE-Clausel. Dort standen sie jedoch bei mir nicht zur Verfügung und erzeugten eine MySQL-Fehlermeldung.

Aha, da haben wir den Fehler. Du musst das AS auf Tabellennamen anwenden. Hier mal ein Beispiel:

-------------------------- schnipp --------------------------------------
mysql> create table tmp1 (
    -> id int not null primary key auto_increment,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> create table tmp2 (
    -> id1 int not null,
    -> id2 int not null,
    -> data varchar(20)
    -> );
Query OK, 0 rows affected (0.00 sec)

mysql> insert into tmp1 (name) values ('test1');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmp1 (name) values ('test2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmp1 (name) values ('test3');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmp1 (name) values ('test4');
Query OK, 1 row affected (0.00 sec)

mysql> select * from tmp1 ;
+----+-------+
| id | name  |
+----+-------+
|  1 | test1 |
|  2 | test2 |
|  3 | test3 |
|  4 | test4 |
+----+-------+
4 rows in set (0.00 sec)

mysql> insert into tmp2 (id1, id2, data) values (1, 2, 'test');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmp2 (id1, id2, data) values (3, 2, 'alpha');
Query OK, 1 row affected (0.00 sec)

mysql> insert into tmp2 (id1, id2, data) values (2, 4, 'beta');
Query OK, 1 row affected (0.00 sec)

mysql> select a.name as name1, b.name as name2, c.data as data from tmp1 as a, tmp1 as b, tmp2 as c where a.id = c.id1 and b.id = c.id2 ;
+-------+-------+-------+
| name1 | name2 | data  |
+-------+-------+-------+
| test1 | test2 | test  |
| test3 | test2 | alpha |
| test2 | test4 | beta  |
+-------+-------+-------+
3 rows in set (0.00 sec)

-------------------------- schnapp --------------------------------------

Das hilft Dir hoffentlich weiter.

Viele Grüße,
Christian