Autor | Zpráva | ||
---|---|---|---|
barakuda Profil * |
#1 · Zasláno: 18. 4. 2024, 23:16:13
Jak rozumět tomuto dotazu:
SELECT DISTINCT trips.sid, stop_names.stop_name FROM trips INNER JOIN stop_names ON stop_names.sid = trips.sid WHERE trips.route_id IN ('877516-2', '877516-1', '877516-3', '841204-1', '661261-1', '100392-2', '100392-1', '100392-3', '802190-1', '802190-2') Pro svůj úkol jsem chtěl vygenerovat dotaz který, bude provádět SELECT z tabulky trips, takže nejprve se v trips bude hledat route_id = ke konkrétní jízdě, ale jen jeden výsledek pro danou cestu a pak LEFT JOIN na tabulku stop_names a vrátí to název města pro danou jízdu. Ale program, který mi ten dotaz měl připravit generuje INNER JOIN a já nevím jaký je v tom rozdíl. Představoval jsem si to takto: SELECT DISTINCT trips.sid, stop_names.stop_name FROM trips LEFT JOIN stop_names ON stop_names.sid = trips.sid WHERE trips.route_id IN ('877516-2', '877516-1', '877516-3', '841204-1', '661261-1', '100392-2', '100392-1', '100392-3', '802190-1', '802190-2') čili jaký je rozdíl v těch dotazech? Je to stejné? O co my šlo, aby ve výběru 10 řádků nebyly například stejné identifikátory cest a stejné město, ale aby byly ve výběru všechny různé cesty, tedy unikátní route_id ale města unikátní nebyly. Pro představu Ostrava, ÚÁN může mít různé identifikátory linek, ale všechny končí na stejné zastávce "Ostrava, ÚÁN". |
||
Kajman Profil |
#2 · Zasláno: 18. 4. 2024, 23:27:50
Rozdíl ve výsledku by byl v případě, že by se odpovídající sid nenašlo v tabulce stop_names. Left outer join vypíše i tak řádky z první tabulky.
|
||
Kajman Profil |
|||
barakuda Profil * |
Díky, tak vlastně jsem to popletl, potřebuju INNER JOIN a ne LEFT JOIN neboli OUTER JOIN.
A ještě dotaz, vzhledem k tomu že je tam to IN ... jaké množství ID ček je rozumné prohledávat? Má smysl k tomu přidat WHERE sid<=max AND sid>=min ... Protože představoval jsem si to tak že to pojedu po 1000 řádcích (export dat z csv do databáze mysql) (1000 řádků se načte a zpracuje najednou, 1000 routes id se bude vyhledávat v trips atd.). Ale to by asi bylo lepší projet seznam ideček filtrem který odstraní duplicitní hodnoty. Nevím... |
||
Kajman Profil |
#5 · Zasláno: 19. 4. 2024, 16:57:43
Surová data bych z csv naimportoval do pomocné tabulky. Všechny řádky najednou. V mysql to jde jedním příkazem. Aktualizaci dat v cílové bych pak udělal dotazem používající tu pomocnou tabulku.
|
||
barakuda Profil * |
#6 · Zasláno: 19. 4. 2024, 20:03:01
mám omezené množství paměti asi 320-500 MB jak kdy. Podle toho jestli zavřu Firefox.
|
||
Kajman Profil |
O to víc je lepší použjít nástroje, co programovali dobří programátoři, a nezkoušet si naprogramovat import sám.
dev.mysql.com/doc/refman/8.0/en/mysqlimport.html |
||
barakuda Profil * |
#8 · Zasláno: 19. 4. 2024, 20:43:50
Aha. No já už to mám v podstatě hotové. A na zálohu se používá co?
|
||
Kajman Profil |
Na základní dotazy se používá google. Pro příkazovou řádku by měl najít mysqldump.
|
||
barakuda Profil * |
#10 · Zasláno: 19. 4. 2024, 21:22:23
Děkuji. Promiňte. Rád jsem si pokecal.
|
||
Časová prodleva: 15 dní
|
0