Pit: Query Grundsatzfrage

Beitrag lesen

Hallo dedlfix,

danke für Deine Antwort. Und warum nicht immer Gruppenwechseltechnik? (Danke für den Begriff, den kannte ich nicht, obwohl ich die Technik schon oft angewendet hatte)

Tabelle marke

+----+-------+
| id | name  |
+----+-------+
|  1 | Audi  |
|  2 | VW    |
|  3 | Skoda |
|  4 | Seat  |
+----+-------+

Tabelle modell

+----+---------+----------+
| id | name    | marke_id |
+----+---------+----------+
|  1 | A2      |        1 |
|  2 | A4      |        1 |
|  3 | A6      |        1 |
|  4 | Golf    |        2 |
|  5 | Sharan  |        2 |
|  6 | Touareg |        2 |
|  7 | Octavia |        3 |
|  8 | Fabia   |        3 |
|  9 | Yeti    |        3 |
| 10 | Leon    |        4 |
| 11 | Ibiza   |        4 |
+----+---------+----------+

SELECT
  ma.name AS marke_name,
  mo.name AS modell_name
FROM marke ma
INNER JOIN modell mo
  ON ma.id = mo.marke_id
ORDER BY ma.name, mo.name
+------------+-------------+
| marke_name | modell_name |
+------------+-------------+
| Audi       | A2          |
| Audi       | A4          |
| Audi       | A6          |
| Seat       | Ibiza       |
| Seat       | Leon        |
| Skoda      | Fabia       |
| Skoda      | Octavia     |
| Skoda      | Yeti        |
| VW         | Golf        |
| VW         | Sharan      |
| VW         | Touareg     |
+------------+-------------+

Nun wird die Ausgabe mittels Gruppenbruch in eine lesbar gegliederte Form gebracht.

$last_entry = null;

while ($row = $result->fetch_object()) {

   if ($last_entry != $row->marke_name) {
        echo $row->marke_name.'<br>';
        $last_entry = $row->marke_name;
    }
    echo '- '.$row->modell_name.'<br>';
}

Ausgabe:


Audi
- A2
- A4
- A6
Seat
- Ibiza
- Leon
Skoda
- Fabia
- Octavia
- Yeti
VW
- Golf
- Sharan
- Touareg

Quelle: https://php-de.github.io/jumpto/gruppenbruch/

Pit