Abfragesnippet für Daten aus verknüpften Tabellen

Aus kvwmap
Wechseln zu: Navigation, Suche

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.