phpbar.de logo

Mailinglisten-Archive

JOIN aber wie? - 1 Haupttabelle, 5 Satellitentabellen

JOIN aber wie? - 1 Haupttabelle, 5 Satellitentabellen

Ulrich Kretschmer u.kretschmer.mysql.4t2 at bergruf.de
Fre Jan 28 16:39:58 CET 2005


Hallo,
habe die nachfolgend [1] aufgeführten Tabellen.

Ich suche nun eine SELECT-Abfrage mit JOIN, die die Daten aus der Haupttabelle 
"vorgang" mit denen aus allen Satellitentabellen zusammenfährt. 
Ziel ist, im Ergebnis der Abfrage anstatt der Verknüpfungsnummern aus der 
Haupttabelle die Werte der entsprechenden ...text-Felder aus den 
Satellitentabellen zu erhalten (z.B. vorgangsstatus.statustext aus 
vorgang.statusnr).

Die Verknüpfungsbedingungen sind wie folgt:

vorgang.vorgangsartnr=vorgangsart.artnr
vorgang.anlagenr=anlage.anlagenr
vorgang.statusnr=vorgangsstatus.statusnr
vorgang.vorgangskategorienr=vorgangskategorie.kategorienr
vorgang.verursachvorgangartnr=vorgangsart.artnr
vorgang.veranlassernr=person.personnr
vorgang.durchfuehrernr=person.personnr

Ich steh' hier irgendwie auf dem Schlauch, wie ich das anstellen soll. Die 
Beispiele für JOIN, die ich gesehen habe, gehen alle von der Konstellation 
aus, daß eine lineare Verkettung von Tabellen vorliegt, während ich hier eine 
"sternförmige" Struktur habe.
Oder geht das so wie gedacht überhaupt nicht und irgendwie (???) ganz anders??
Vieleicht mit sub-select's?

Dank im Voraus für Hilfe
Ulrich



[1] Tabellendefinitionen (etwas gekürzt, nur das relevante für meine Anfrage 
hier):

CREATE TABLE `anlage` (
  `anlagenr` int(11) unsigned NOT NULL auto_increment,
  `anlagetext` varchar(40) NOT NULL default '',
  PRIMARY KEY  (`anlagenr`)
) TYPE=MyISAM;

CREATE TABLE `person` (
  `personnr` int(11) unsigned NOT NULL auto_increment,
  `persontext` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`personnr`)
) TYPE=MyISAM;

CREATE TABLE `vorgang` (
  `vorgangsnr` int(11) unsigned NOT NULL auto_increment,
  `vorgangsartnr` int(11) unsigned NOT NULL default '0',
  `anlagenr` int(11) unsigned NOT NULL default '0',
  `statusnr` int(11) unsigned default '1',
  `vorgangskategorienr` int(11) unsigned default '0',
  `verursachvorgangartnr` int(11) unsigned default '0',
  `veranlassernr` int(11) unsigned NOT NULL default '0',
  `durchfuehrernr` int(11) unsigned NOT NULL default '0',
  PRIMARY KEY  (`vorgangsnr`)
) TYPE=MyISAM;

 CREATE TABLE `vorgangsart` (
  `artnr` int(11) unsigned NOT NULL auto_increment,
  `arttext` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`artnr`)
) TYPE=MyISAM

CREATE TABLE `vorgangskategorie` (
  `kategorienr` int(11) unsigned NOT NULL auto_increment,
  `kategorietext` char(30) NOT NULL default '',
  PRIMARY KEY  (`kategorienr`)
) TYPE=MyISAM;

 CREATE TABLE `vorgangsstatus` (
  `statusnr` int(11) unsigned NOT NULL auto_increment,
  `statustext` varchar(60) NOT NULL default '',
  PRIMARY KEY  (`statusnr`)
) TYPE=MyISAM

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive