Abfragesnippet für Daten aus verknüpften Tabellen
Aus kvwmap
Version vom 26. September 2008, 07:54 Uhr von HolgerR (Diskussion | Beiträge)
Zur Darstellung der Suchergebnisse aus verknüpften Tabellen (Tabelle1 und Tabelle2), in der Form
Tabelle1.id.1 Tabelle1.Feld1.1 Tabelle1.Feld2.1 Tabelle1.Feld3.1 Tabelle2.Feld11.1 Tabelle2.Feld21.1 Tabelle2.Feld11.2 Tabelle2.Feld21.2 Tabelle2.Feld11.3 Tabelle2.Feld21.3 Tabelle1.id.2 Tabelle1.Feld1.2 Tabelle1.Feld2.2 Tabelle1.Feld3.2 Tabelle2.Feld12.1 Tabelle2.Feld22.1 Tabelle2.Feld12.2 Tabelle2.Feld22.2 :
wird in der Spalte 'pfad' der Tabelle 'layer' eine Abfrage gespeichert, welche die darzustellenden Daten aus beiden Tabellen beinhaltet.
SELECT T1.*, T2.* FROM Tabelle1 AS T1, Tabelle2 AS T2 WHERE (T1.id = T2.id)
Im Snippet kann der Datenaufruf wie folgt erfolgen
<!-- Schleife zur Auflistung der Daten aus Tabelle 1 --> <?php for ($j=0;$j<count($this->qlayerset[$i]['shape']);) { $id=$this->qlayerset[$i]['shape'][$j]['Tabelle1.id']; ?> <tr> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle1.id']; ?></td> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle1.Feld1']; ?></td> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle1.Feld2']; ?></td> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle1.Feld3']; ?></td> </tr> <!-- 2. Schleife zur Auflistung der Daten aus Tabelle 2 --> <?php for ($j=$j;($this->qlayerset[$i]['shape'][$j]['Tabelle1.id'] == $id);$j++) { ?> <tr> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle2.Feld1']; ?></td> <td><?php echo $this->qlayerset[$i]['shape'][$j]['Tabelle2.Feld2']; ?></td> </tr> <?php } } ?>
Das ganze funktioniert auch, wenn die Daten in einer Tabelle abgespeichert sind und ein Teil der Daten redundant (würde hier Tabelle 1 entsprechen) abgelegt sind und sich nur der andere Teil ändert (entspricht Tabelle 2). Das vereinfacht in diesem Fall das Statement in der Spalte 'pfad'. Möglich wäre auch, in PostgreSQL obige Abfrage zu speichern und im pfad-Statement diese Abfrage anzusprechen.