Einzelnen Beitrag anzeigen
  #1  
Alt 08.06.2008, 18:43:30
Mattes1001 Mattes1001 ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 44
Beiträge: 6
"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
Mit Zitat antworten