Tabellennamen haben: EbeneFinden Sie heraus, nur die IDs, die keine Kinder ORDER BY Eltern und Großeltern
+-----+-------------------+----------+
| id | name | parentid |
+-----+-------------------+----------+
| 1 | AIR CONDITIONER | 0 |
| 2 | TV | 0 |
| 3 | SPLIT TYPE | 1 |
| 4 | WINDOWS TYPE | 1 |
| 5 | LCD | 2 |
| 6 | PLASMA | 2 |
| 7 | MUSIC PLAYER | 0 |
| 8 | AC 0.75 TON | 3 |
| 9 | AC 1 TON | 3 |
| 10 | WT 0.75 TON | 4 |
| 11 | WT 1 TON | 4 |
| 12 | LCD 32" UP | 5 |
| 13 | LCD 4" UP | 5 |
| 14 | PHOTO ALBUMS | 0 |
| 15 | STANDUP TYPE | 1 |
| 16 | CD PLAYERS | 7 |
| 17 | MP3 PLAYERS | 7 |
| 18 | CDS | 0 |
| 19 | BOOKS | 0 |
| 20 | PORTABLE TV | 2 |
+-----+-------------------+----------+
So zuerst, ich müde, alle IDs, um herauszufinden, die keine Kinder mit der folgenden Abfrage hat:
SELECT
t1.id,
t1.name AS name,
t2.id AS parentid,
t2.name AS parent_name,
t3.id AS grandparentid,
t3.name AS grandparent_name
FROM level t1
LEFT JOIN level t2 ON t1.parentid=t2.id
LEFT JOIN level t3 ON t2.parentid=t3.id
WHERE t1.id NOT IN (SELECT parentid from level)
Und Sie erhalten das folgende Ergebnis
+-----+--------------+----------------+-------------------+
| id | name | parent_name | grandparent_name |
+-----+--------------+----------------+-------------------+
| 6 | PLASMA | TV | NULL |
| 8 | AC 0.75 TON | SPLIT TYPE | AIR CONDITIONER |
| 9 | AC 1 TON | SPLIT TYPE | AIR CONDITIONER |
| 10 | WT 0.75 TON | WINDOWS TYPE | AIR CONDITIONER |
| 11 | AC 1 TON | WINDOWS TYPE | AIR CONDITIONER |
| 12 | LCD 32" UP | LCD | TV |
| 13 | LCD 42" UP | LCD | TV |
| 14 | PHOTO ALBUM | NULL | NULL |
| 15 | STANDUP TYPE | AIR CONDITIONER| NULL |
| 16 | CD PLAYERS | MUSIC PLAYER | NULL |
| 17 | MP3 PLAYERS | MUSIC PLAYER | NULL |
| 18 | CDS | NULL | NULL |
| 19 | BOOKS | NULL | NULL |
| 19 | BOOKS | NULL | NULL |
+-----+--------------+----------------+-------------------+
Dies ist nur die IDs bekommt, die keine Kinderaufzeichnen habenAber ich brauche eine Option wählen Sie das Menü erstellen, die benutzerfreundlich ist wie folgt:
I ORDER BY t2.parentid DESC versucht haben, DESC t1.prentid aber die Art und Weise wollte ich nicht
erhalten BEISPIEL (Sie können dieses Beispiel ignorieren. Nur um eine Idee zu geben, was ich erreichen müssen):
<option>Air Conditioner >> STANDUP TYPE</option>
<option>Air Conditioner >> SPLIT TYPE >> AC 0.75 TON</option>
<option>Air Conditioner >> SPLIT TYPE >> AC 1 TON</option>
<option>Air Conditioner >> WINDOWS TYPE >> AC 0.75 TON</option>
<option>Air Conditioner >> WINDOWS TYPE >> AC 1 TON</option>
<option>BOOKS</option>
<option>CDS</option>
<option>MUSIC PLAYERS >> MP3 PLAYERS</option>
<option>MUSIC PLAYERS >> CDS PLAYERS</option>
<option>PHOTO ALBUM</option>
<option>TV >> LCD >> LCD 32" UP</option>
<option>TV >> LCD >> LCD 42" UP</option>
<option>TV >> PLASMA</option>
<option>TV >> PORTABLE TV</option>
Also muss ich eine andere Abfrage herauszufinden:
FÜHREN ERWARTEN
+-----+-------------------+------------------+--------------+
| id | grandparent_name | parent_name | name |
+-----+-------------------+------------------+--------------+
| 15 | NULL | AIR CONDITIONER | STANDUP TYPE |
| 8 | AIR CONDITIONER | SPLIT TYPE | AC 0.75 TON |
| 9 | AIR CONDITIONER | SPLIT TYPE | AC 1 TON |
| 10 | AIR CONDITIONER | WINDOWS TYPE | WT 0.75 TON |
| 11 | AIR CONDITIONER | WINDOWS TYPE | AC 1 TON |
| 19 | NULL | NULL | BOOKS |
| 18 | NULL | NULL | CDS |
| 16 | NULL | MUSIC PLAYERS | CD PLAYERS |
| 17 | NULL | MUSIC PLAYERS | MP3 PLAYERS |
| 14 | NULL | NULL | PHOTO ALBUM |
| 12 | TV | LCD | LCD 32" UP |
| 13 | TV | LCD | LCD 42" UP |
| 6 | NULL | TV | PLASMA |
| 20 | NULL | TV | PORTABLE TV |
+-----+-------------------+------------------+--------------+
Ist das erreichbar? Kann ich CASE WHEN und wie?
Oder muss ich PHP verwenden, um das Ergebnis neu zu ordnen?
THX
Ja, ich glaube, von dort gehen kann! –