Autor Zpráva
barakuda
Profil *
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
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
en.wikipedia.org/wiki/Join_(SQL)#Left_outer_join
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
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 *
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 *
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 *
Děkuji. Promiňte. Rád jsem si pokecal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0