Zuordnung über zwei Tabellen hinweg,
bearbeitet von Jörg ReinholzMoin!
Das Problem ist, dass Du die eine Tabelle 2 Mal fragen musst. das macht die Zuordnung von Aliasen notwendig.
Meine Lösung:
Tabelle pNamen:
~~~sql
CREATE TABLE IF NOT EXISTS `pNamen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `pNamen` (`id`, `name`) VALUES
(1, 'Andrea'),
(2, 'Bernd'),
(3, 'Carmen'),
(4, 'Detlev');
~~~
Tabelle pPaare:
~~~sql
CREATE TABLE IF NOT EXISTS `pPaare` (
`p1` int(11) NOT NULL,
`p2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `pPaare` (`p1`, `p2`) VALUES
(1, 2),
(1, 3),
(4, 2);
~~~
Abfrage:
~~~sql
SELECT
`p1`,
`p2`,
`PN1`.`name` as `Partner 1`,
`PN2`.`name` as `Partner 2`
FROM
`pPaare` as `PP1`,
`pNamen` as `PN1`,
`pNamen` as `PN2`
WHERE
`PN1`.`id`=`PP1`.`p1`
AND `PN2`.`id`=`PP1`.`p2`;
~~~
Ergebnis:
~~~
+----+----+-----------+-----------+
| p1 | p2 | Partner 1 | Partner 2 |
+----+----+-----------+-----------+
| 1 | 2 | Andrea | Bernd |
| 1 | 3 | Andrea | Carmen |
| 4 | 2 | Detlev | Bernd |
+----+----+-----------+-----------+
3 rows in set (0.00 sec)
~~~
(Du kannst p1, p2 auch aus dem Select weglassen.)
Jörg Reinholz
Zuordnung über zwei Tabellen hinweg,
bearbeitet von Jörg ReinholzMoin!
Das Problem ist, dass Du die eine Tabelle 2 Mal fragen musst. das macht die Zuordnung von Aliasen notwendig.
Meine Lösung:
Tabelle pNamen:
~~~sql
CREATE TABLE IF NOT EXISTS `pNamen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `pNamen` (`id`, `name`) VALUES
(1, 'Andrea'),
(2, 'Bernd'),
(3, 'Carmen'),
(4, 'Detlev');
~~~
Tabelle pPaare:
~~~sql
CREATE TABLE IF NOT EXISTS `pPaare` (
`p1` int(11) NOT NULL,
`p2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `pPaare` (`p1`, `p2`) VALUES
(1, 2),
(1, 3),
(4, 2);
~~~
Abfrage:
~~~sql
SELECT
`p1`,
`p2`,
`PN1`.`name` as `Partner 1`,
`PN2`.`name` as `Partner 2`
FROM
`pPaare` as `PP1`,
`pNamen` as `PN1`,
`pNamen` as `PN2`
WHERE
`PN1`.`id`=`p1`
AND `PN2`.`id`=`p2`;
~~~
Ergebnis:
~~~
+----+----+-----------+-----------+
| p1 | p2 | Partner 1 | Partner 2 |
+----+----+-----------+-----------+
| 1 | 2 | Andrea | Bernd |
| 1 | 3 | Andrea | Carmen |
| 4 | 2 | Detlev | Bernd |
+----+----+-----------+-----------+
3 rows in set (0.00 sec)
~~~
(Du kannst p1, p2 auch aus dem Select weglassen.)
Jörg Reinholz
Zuordnung über zwei Tabellen hinweg,
bearbeitet von Jörg ReinholzMoin!
Das Problem ist, dass Du die eine Tabelle 2 Mal fragen musst. das macht die Zuordnung von Aliasen notwendig.
Meine Lösung:
Tabelle pNamen:
~~~sql
CREATE TABLE IF NOT EXISTS `pNamen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
INSERT INTO `pNamen` (`id`, `name`) VALUES
(1, 'Andrea'),
(2, 'Bernd'),
(3, 'Carmen'),
(4, 'Detlev');
~~~
Tabelle pPaare:
~~~sql
CREATE TABLE IF NOT EXISTS `pPaare` (
`p1` int(11) NOT NULL,
`p2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `pPaare` (`p1`, `p2`) VALUES
(1, 2),
(1, 3),
(4, 2);
~~~
Abfrage:
~~~sql
SELECT
`p1`,
`p2`,
`PN1`.`name` as `Partner 1`,
`PN2`.`name` as `Partner 2`
FROM
`pPaare` as `PP1`,
`pNamen` as `PN1`,
`pNamen` as `PN2`
WHERE
`PN1`.`id`=`p1`
AND `PN2`.`id`=`p2`;
~~~
Ergebnis:
~~~
+----+----+-----------+-----------+
| p1 | p2 | Partner 1 | Partner 2 |
+----+----+-----------+-----------+
| 1 | 2 | Andrea | Bernd |
| 1 | 3 | Andrea | Carmen |
| 4 | 2 | Detlev | Bernd |
+----+----+-----------+-----------+
3 rows in set (0.00 sec)
~~~
Jörg Reinholz