King^Lully: profikorrekte Lösung 2

Beitrag lesen

Na gut, folgende lösung würden wir auch als "profikorrekt" durchgehen lassen:

  
SELECT  
 b.Kennzahl,  
 (  
 SELECT  
  u.name  
 FROM  
  unternehmen u  
 WHERE  
  (u.ident = b.Netz)  
 ) AS Netz_Name,  
 b.Netz AS Netz_ID,  
 (  
 SELECT  
  u.name  
 FROM  
  unternehmen u  
 WHERE  
  (u.ident = b.KA)  
 ) AS KA_Name,  
 b.KA AS KA_ID,  
 (  
 SELECT  
  u.name  
 FROM  
  unternehmen u  
 WHERE  
  (u.ident = b.Strom)  
 ) AS Strom_Name,  
 b.Strom AS Strom_ID,  
 (  
 SELECT  
  u.name  
 FROM  
  unternehmen u  
 WHERE  
  (u.ident = b.Wasser)  
 ) AS Wasser_Name,  
 b.Wasser AS Wasser_ID,  
FROM  
 betreiber b  
WHERE  
 (b.kennzahl = 100100)             -- wenns denn schon sein muss  ;)  

Wichtig hier, dass die IDs des abgefragten und verzeigerten Objekts ebenfalls abgefragt wird, damit keine Inkonsistenz ensteht. (Bspw. könnten Unternehmen gleiche Namen haben, zumindest reicht das Attribut Name nicht als Eindeutigkeit, vgl. auch die Abfrage "SELECT Name FROM Unternehmen" wenn die Tabelle Unternehmen nur ein Datenfeld Name besässe. - BTW, müsste es nicht "Namen" heissen? ;)