Diferència entre revisions de la pàgina «Consultes recursives: bikeshop»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «=Introducció= (TBD) =Base de dades bikeshop= Mirem la tala '''CATEGORIA''': <pre> select id_cat, categoria, id_parent from CATEGORIA +--------+----------------------...».)
 
Línia 46: Línia 46:
 
|    17 | Cuadros de Gravel                            |        15 |    15 | Cuadros                          |
 
|    17 | Cuadros de Gravel                            |        15 |    15 | Cuadros                          |
 
|    18 | Horquillas                                    |        15 |    15 | Cuadros                          |
 
|    18 | Horquillas                                    |        15 |    15 | Cuadros                          |
 +
...
 +
 
168 files
 
168 files
 
</pre>
 
</pre>
Amb un ''LEFT OUTER JOIN'' tornem a recuperar els 173 valors (les categories que no tenen pare)ç
+
Hem perdut 5 categories. Amb un ''LEFT OUTER JOIN'' tornem a recuperar els 173 valors (les categories que no tenen pare)
 
<pre>
 
<pre>
 
select C2.categoria cat_pare, C1.categoria cat_fill from CATEGORIA C1
 
select C2.categoria cat_pare, C1.categoria cat_fill from CATEGORIA C1
Línia 67: Línia 69:
 
| Bicicletas                        | Bicicletas de Ciclocross                      |
 
| Bicicletas                        | Bicicletas de Ciclocross                      |
 
| Bicicletas                        | Bicicletas Contrarreloj                       
 
| Bicicletas                        | Bicicletas Contrarreloj                       
 +
...
  
 
173 files
 
173 files
Línia 89: Línia 92:
 
| Transmisión  | Pedales                              |
 
| Transmisión  | Pedales                              |
 
| Transmisión  | Transmisión eléctrica                |
 
| Transmisión  | Transmisión eléctrica                |
 +
...
 +
 
33 files
 
33 files
 
</pre>
 
</pre>
Línia 123: Línia 128:
 
|    13 | Bicicletas Niños                              |        6 |      6 | Bicicletas                        |      1 | Carretera    |
 
|    13 | Bicicletas Niños                              |        6 |      6 | Bicicletas                        |      1 | Carretera    |
 
|    14 | Bicicletas eléctricas                        |        6 |      6 | Bicicletas                        |      1 | Carretera    |
 
|    14 | Bicicletas eléctricas                        |        6 |      6 | Bicicletas                        |      1 | Carretera    |
</pre>
+
...
 +
 
 +
173 files</pre>
  
 
<pre>
 
<pre>

Revisió del 07:55, 7 feb 2022

Introducció

(TBD)

Base de dades bikeshop

Mirem la tala CATEGORIA:

select id_cat, categoria, id_parent from CATEGORIA

+--------+-----------------------------------------------+-----------+
| id_cat | categoria                                     | id_parent |
+--------+-----------------------------------------------+-----------+
|      1 | Carretera                                     |      NULL |
|      2 | MTB                                           |      NULL |
|      3 | E-BIKE                                        |      NULL |
|      4 | BMX                                           |      NULL |
|      5 | CIUDAD                                        |      NULL |
|      6 | Bicicletas                                    |         1 |
|      7 | Bicicletas de Carrera                         |         6 |
|      8 | Bicicletas de Gravel                          |         6 |
|      9 | Bicicletas de Ciclocross                      |         6 |
|     10 | Bicicletas Contrarreloj                       |         6 |
|     11 | Bicicletas de pista                           |         6 |
...

173 files

Volem visualitzar 2 nivells:

select C1.id_cat, C1.categoria, C1.id_parent, C2.id_cat, C2.categoria from CATEGORIA C1
INNER JOIN CATEGORIA C2
ON C1.id_parent=C2.id_cat;

+--------+-----------------------------------------------+-----------+--------+-----------------------------------+
| id_cat | categoria                                     | id_parent | id_cat | categoria                         |
+--------+-----------------------------------------------+-----------+--------+-----------------------------------+
|      6 | Bicicletas                                    |         1 |      1 | Carretera                         |
|      7 | Bicicletas de Carrera                         |         6 |      6 | Bicicletas                        |
|      8 | Bicicletas de Gravel                          |         6 |      6 | Bicicletas                        |
|      9 | Bicicletas de Ciclocross                      |         6 |      6 | Bicicletas                        |
|     10 | Bicicletas Contrarreloj                       |         6 |      6 | Bicicletas                        |
|     11 | Bicicletas de pista                           |         6 |      6 | Bicicletas                        |
|     12 | Bicicletas para mujeres                       |         6 |      6 | Bicicletas                        |
|     13 | Bicicletas Niños                              |         6 |      6 | Bicicletas                        |
|     14 | Bicicletas eléctricas                         |         6 |      6 | Bicicletas                        |
|     15 | Cuadros                                       |         1 |      1 | Carretera                         |
|     16 | Cuadros de carretera                          |        15 |     15 | Cuadros                           |
|     17 | Cuadros de Gravel                             |        15 |     15 | Cuadros                           |
|     18 | Horquillas                                    |        15 |     15 | Cuadros                           |
...

168 files

Hem perdut 5 categories. Amb un LEFT OUTER JOIN tornem a recuperar els 173 valors (les categories que no tenen pare)

select C2.categoria cat_pare, C1.categoria cat_fill from CATEGORIA C1
LEFT OUTER JOIN CATEGORIA C2
ON C1.id_parent=C2.id_cat;

+-----------------------------------+-----------------------------------------------+
| cat_pare                          | cat_fill                                      |
+-----------------------------------+-----------------------------------------------+
| NULL                              | Carretera                                     |
| NULL                              | MTB                                           |
| NULL                              | E-BIKE                                        |
| NULL                              | BMX                                           |
| NULL                              | CIUDAD                                        |
| Carretera                         | Bicicletas                                    |
| Bicicletas                        | Bicicletas de Carrera                         |
| Bicicletas                        | Bicicletas de Gravel                          |
| Bicicletas                        | Bicicletas de Ciclocross                      |
| Bicicletas                        | Bicicletas Contrarreloj                       
...

173 files

Volem filtrar el que penja de Bicicletas > CIUDAD > transmisión filtrem:

select C2.categoria cat_pare, C1.categoria cat_fill from CATEGORIA C1
LEFT OUTER JOIN CATEGORIA C2
ON C1.id_parent=C2.id_cat
WHERE C2.categoria='Transmisión';

+--------------+---------------------------------------+
| cat_pare     | cat_fill                              |
+--------------+---------------------------------------+
| Transmisión  | Cables y fundas                       |
| Transmisión  | Cassettes y cadenas                   |
| Transmisión  | Cambios y desviadores                 |
| Transmisión  | Manetas                               |
| Transmisión  | Pedaliers                             |
| Transmisión  | Pedales                               |
| Transmisión  | Transmisión eléctrica                 |
...

33 files

Ho fem malament perquè la categoria Transmisión no és única.

33 files perquè hem trobat:

  • Bicicletas > carretera > Transmisión
  • Bicicletas > MTB > Transmisión
  • Bicicletas > BMX > BMX FreeStyle > Transmisión
  • Bicicletas > CIUDAD > Transmisión

Volem doncs ara visualitzar els 3 nivells

select C1.id_cat, C1.categoria, C1.id_parent, C2.id_cat, C2.categoria, C3.id_cat, C3.categoria from 
((CATEGORIA C1 LEFT OUTER JOIN CATEGORIA C2 ON C1.id_parent=C2.id_cat)
LEFT OUTER JOIN CATEGORIA C3 ON C2.id_parent=C3.id_cat);

+--------+-----------------------------------------------+-----------+--------+-----------------------------------+--------+---------------+
| id_cat | categoria                                     | id_parent | id_cat | categoria                         | id_cat | categoria     |
+--------+-----------------------------------------------+-----------+--------+-----------------------------------+--------+---------------+
|      1 | Carretera                                     |      NULL |   NULL | NULL                              |   NULL | NULL          |
|      2 | MTB                                           |      NULL |   NULL | NULL                              |   NULL | NULL          |
|      3 | E-BIKE                                        |      NULL |   NULL | NULL                              |   NULL | NULL          |
|      4 | BMX                                           |      NULL |   NULL | NULL                              |   NULL | NULL          |
|      5 | CIUDAD                                        |      NULL |   NULL | NULL                              |   NULL | NULL          |
|      6 | Bicicletas                                    |         1 |      1 | Carretera                         |   NULL | NULL          |
|      7 | Bicicletas de Carrera                         |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|      8 | Bicicletas de Gravel                          |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|      9 | Bicicletas de Ciclocross                      |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|     10 | Bicicletas Contrarreloj                       |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|     11 | Bicicletas de pista                           |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|     12 | Bicicletas para mujeres                       |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|     13 | Bicicletas Niños                              |         6 |      6 | Bicicletas                        |      1 | Carretera     |
|     14 | Bicicletas eléctricas                         |         6 |      6 | Bicicletas                        |      1 | Carretera     |
...

173 files
select C3.categoria cat_avi, C2.categoria cat_pare, C1.categoria cat_fill from 
((CATEGORIA C1 LEFT OUTER JOIN CATEGORIA C2 ON C1.id_parent=C2.id_cat)
LEFT OUTER JOIN CATEGORIA C3 ON C2.id_parent=C3.id_cat)
WHERE C3.categoria='CIUDAD' AND C2.categoria='Transmisión';

+---------+--------------+---------------------------------------+
| cat_avi | cat_pare     | cat_fill                              |
+---------+--------------+---------------------------------------+
| CIUDAD  | Transmisión  | Cables y fundas                       |
| CIUDAD  | Transmisión  | Cubrecadenas                          |
| CIUDAD  | Transmisión  | Cassettes                             |
| CIUDAD  | Transmisión  | Cadenas                               |
| CIUDAD  | Transmisión  | Mandos de cambio                      |
| CIUDAD  | Transmisión  | Cambios                               |
| CIUDAD  | Transmisión  | Pedaliers, Cajas del pedalier, Platos |
+---------+--------------+---------------------------------------+

creat per Joan Quintana Compte, febrer 2022