Jörg Reinholz: Zuordnung über zwei Tabellen hinweg,

Beitrag lesen

Moin!

Das Problem ist, dass Du die eine Tabelle 2 Mal fragen musst. Das macht die Zuordnung von Aliasen notwendig.

Meine Lösung:

Tabelle pNamen:

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:

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:

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