Diskuze: Select z normalizované DB
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Musíš k tomu použít v dotazu JOIN na tabulku, kde máš názvy těch letadel
např.:
SELECT Letadla.ID_letadla, Ciselnik.Nazev, Letadla.Dolet, Linky.aerolinka, Letadla.rozpeti FROM Letadla
INNER JOIN Ciselnik ON Ciselnik.IDtypu_letadla = Letadla.typ_letadla
INNER JOIN Linky ON Linky.IDaerolinky = Letadla.aerolinka
WHERE Letadla.typ_letadla = 1
kde v tabulce "Ciselnik" jsou typy letadel (každý se svým ID) a v tabulce "Linky" jsou typy(druhy) aerolinek taky každá s nějakým ID
SELECT letadla.ID_letdla, typ_letadla.typ_letadla, aerolinka.nazev_aerolinky
FROM letadla
LEFT JOIN typ_letadla ON typ_letadla.Id_typu=letadla.typ_letadla
LEFT JOIN aerolinka ON aerolinka.ID_aerolinky = letadla.aerolinka
WHERE letadla.typ_letadla=1
Mas nevhodne zvolene jmena atributu entit. Entita Typ_letadla by mel mit atribut nazev a ne zase typ_letadla. Z modelu by melo byt zrejme jaka entita je v realnem svete reprezentovana.
A jeste bych se vyhnul pouziti "*" to je spatny postup. Pro lepsi
optimalizaci dotazu je dobre presne deklarovat jake atributy a z jakych entit
chci ziskat.
Doporucuji si neco nastudovat o optimalizace sql dotazu.
Děkuji, už se zobrazuje přímo ten typ, ale každopádně mi to vyhazuje asi 30 upozornění na stránce že nejsou definovány dolet, aerolinka, rozpeti
Takto to vypadá
ID_letadla | typ_letadla | dolet | aerolinka | rozpeti |
1 | Boeing 737 |
a ta tabulka se zobrazuje až pod
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on line 50
Notice: Undefined index: rozpeti_kridel in C:\xampp\htdocs\sablona\boeings.php on line 51
Tak to asi nemáš definovaný v tom dotazu. Ukaž, jak jsi spáchal ten dotaz?
SELECT letadla.ID_Letadla, typ_letadla.typ_letadla, aerolinka.nazev_aerolinky FROM letadla LEFT JOIN typ_letadla ON typ_letadla.Id_typu=letadla.typ_letadla LEFT JOIN aerolinka ON aerolinka.nazev_aerolinky = letadla.aerolinka WHERE letadla.typ_letadla=1
Děkuji moc, JOINY dělám poprvé
Tak tam ještě zamontuj ten dolet a rozpětí křídel. Mezi námi, pojmenování tabulek a sloupců jsi zvolil dost nešťastně...
SELECT letadla.ID_Letadla, typ_letadla.typ_letadla, aerolinka.nazev_aerolinky
Notice: Undefined index: dolet in C:\xampp\htdocs\sablona\boeings.php on
line 49
Notice: Undefined index: aerolinka in C:\xampp\htdocs\sablona\boeings.php on
line 50
Notice: Undefined index: rozpeti_kridel
V tom selectu se zadny ze sloupcu nejmenuje dolet ani aerolinka ani rozpeti_kridel.
Takhle, pokud to neni uplne jasne, jakoze nam jo, tak si tam dej
echo '<pre>';
var_dump($row);
Melo by to vypsat neco takoveho
array(ID_Letadla=>123, typ_letadla=456, nazev_aerolinky=789)
A ty bys potreboval toto
array(ID_Letadla=>123, typ_letadla=456, aerolinka=789,dolet=xyz, rozpeti=>abc)
Zobrazeno 11 zpráv z 11.