"Verschachtelte" Selects über 3 Tabellen
Hi,
ich habe folgende Tabellen. Ich geb mal die komplette Create und inserts mit, damit sich das vielleicht jemand nachbauen kann ;-)
Code:
DROP TABLE IF EXISTS `spieler`;
CREATE TABLE IF NOT EXISTS `spieler` (
`id` int(3) NOT NULL,
`uid` varchar(10) collate utf8_unicode_ci NOT NULL,
`name` varchar(30) collate utf8_unicode_ci NOT NULL,
`vorname` varchar(30) collate utf8_unicode_ci NOT NULL,
`pic` varchar(80) collate utf8_unicode_ci default NULL,
`pic_thumb` varchar(80) collate utf8_unicode_ci default NULL,
`beschreibung1` varchar(300) collate utf8_unicode_ci default NULL,
`beschreibung2` varchar(300) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `spieler`
--
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(1, 'hahn_c', 'Hahn', 'Christopher', '/images/spieler/christopher_hahn.jpg', '/images/spieler/thumbs/christopher_hahn.jpg', '', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(2, 'hahn_m', 'Hahn', 'Matthias', '/images/spieler/defaultUser.jpg', '/images/spieler/thumbs/matthias_hahn.jpg', '', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(3, 'goetz_h', 'Götz', 'Hans', '/images/spieler/hans_goetz.jpg', '/images/spieler/thumbs/hans_goetz.jpg', '', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(4, 'ruediger_b', 'Berndt', 'Rüdiger', '/images/spieler/ruediger_berndt.jpg', '/images/spieler/thumbs/ruediger_berndt.jpg', '', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(5, 'david_k', 'Komma', 'David', '/images/spieler/david_komma.jpg', '/images/spieler/thumbs/david_komma.jpg', '', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(6, 'bernd_s', 'Schulz', 'Bernd', '/images/spieler/bernd_schulz.jpg', '/images/spieler/thumbs/bernd_schulz.jpg', '');
INSERT INTO `spieler` (`id`, `uid`, `name`, `vorname`, `pic`, `pic_thumb`, `beschreibung1`, `beschreibung2`) VALUES
(7, 'philip_w', 'Wurzberger', 'Philip', '/images/spieler/philip_wurzberger.jpg', '/images/spieler/thumbs/philip_wurzberger.jpg', '', '');
DROP TABLE IF EXISTS `aufstellung`;
CREATE TABLE IF NOT EXISTS `aufstellung` (
`id` int(3) NOT NULL,
`auf_spieler_id` int(3) NOT NULL REFERENCES spieler(id),
`saison` int(6) default NULL,
`geschlecht` varchar(1) collate utf8_unicode_ci default NULL,
`runde` varchar(2) collate utf8_unicode_ci default NULL,
`mannschaft` int(1) default NULL,
`position` int(2) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `aufstellung`
--
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(1, 1, 200809, 'h', 'vr', 1, 1);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(2, 2, 200809, 'h', 'vr', 1, 2);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(3, 3, 200809, 'h', 'vr', 1, 3);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(4, 4, 200809, 'h', 'vr', 1, 4);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(5, 5, 200809, 'h', 'vr', 1, 5);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(6, 6, 200809, 'h', 'vr', 1, 6);
INSERT INTO `aufstellung` (`id`, `auf_spieler_id`, `saison`, `geschlecht`, `runde`, `mannschaft`, `position`) VALUES
(7, 7, 200809, 'h', 'vr', 1, 7);
DROP TABLE IF EXISTS `bilanzen`;
CREATE TABLE IF NOT EXISTS `bilanzen` (
`id` int(3) NOT NULL auto_increment,
`bil_spieler_id` int(3) NOT NULL REFERENCES spieler(id),
`saison_clicktt` varchar(10) collate utf8_unicode_ci default NULL,
`person_clicktt` varchar(8) collate utf8_unicode_ci default NULL,
`clubnr_clicktt` varchar(4) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Daten für Tabelle `bilanzen`
--
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(1, '2007%2F08', '366147', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(1, '2006%2F07', '366147', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(1, '2005%2F06', '366147', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(2, '2007%2F08', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(2, '2006%2F07', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(2, '2005%2F06', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(3, '2007%2F08', '367153', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(3, '2006%2F07', '367153', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(3, '2005%2F06', '367153', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(4, '2007%2F08', '386335', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(4, '2006%2F07', '386335', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(4, '2005%2F06', '386335', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(5, '2007%2F08', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(5, '2006%2F07', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(5, '2005%2F06', '381117', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(6, '2007%2F08', '702712', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(6, '2006%2F07', '702712', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(6, '2005%2F06', '702712', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(7, '2007%2F08', '370636', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(7, '2006%2F07', '370636', '4169');
INSERT INTO `bilanzen` (`bil_spieler_id`, `saison_clicktt`, `person_clicktt`, `clubnr_clicktt`) VALUES
(7, '2005%2F06', '370636', '4169');
So.
Was ich nun will ist einmal alle Spieler mit ihrer Aufstellung: 1:1 Beziehung. Die hole ich über
Code:
$result = mysql_query('
SELECT
*
FROM
spieler s, aufstellung a
WHERE
s.id=a.auf_spieler_id
AND a.mannschaft = '.$mannschaft.'
AND a.geschlecht = "'.$geschlecht.'"
AND a.saison = "'.$saison.'"
AND a.runde = "'.$runde.'"
;') OR die(mysql_error());
Was ich aber noch brauche sind alle Bilanzen des jeweiligen Spielers.
Code:
$result_b = mysql_query('
SELECT b.saison_clicktt, b.person_clicktt, b.clubnr_clicktt, b.bil_spieler_id
FROM bilanzen b
LEFT JOIN spieler s
USING ( id )
;')OR die(mysql_error());
Innerhalb der Ausgabe des Ergebnisses des ersten Query möchte ich nun die Bilanzen aus der zweiten Anfrage anzeigen lassen.
Kann mir jemand dabei helfen?
Liebe Grüße
Matthias
|