Autor | Zpráva | ||
---|---|---|---|
Ulet Profil * |
Dobrý den,
řeším drobný databázový problém mám 2 dotazy: 1. dotaz (tímto dotazem z MySQL databáze vyberu stroje které chci zobrazit. Také JEN v této databázi je nastaveno jejich řazení dle sloupečku ord) z tohto dotazu vyleze promněnná v podobě $vybrane_akcni_stroje = "cislo stroje, cislo stroje, cislo stroje..." kterou pak jednoduše vložím do dalšího dotazu. Zde mohu udělat jakoukoli změnu. SELECT stroje FROM pstroje_akce ORDER BY ord DESC 2.dotaz tentokrát MSSQL (ikdyž to asi není podstatné) zde už si o danných strojích vytáhnu vše potřebné $sql = "SELECT n.user_kod_stroje, n.user_vyrobce, n.user_rok_vyroby, n.user_inv_cislo, n.id_nomen, n.skupina_nomenklatur, ast.file_name, nomsku.skupina_otce FROM dba.nomenklatura n LEFT JOIN dba.attach_store ast ON ast.pk = n.id_nomen AND ast.tabulka = 'nomenklatura' AND ast.user_typ_obrazku = 10 LEFT JOIN dba.nom_skup nomsku ON n.skupina_nomenklatur = nomsku.skupina_nomenklatur WHERE n.user_status_stroje IN(1,2) AND n.user_stroj = 1 AND n.id_nomen IN($vybrane_akcni_stroje)"; co bych potřeboval je dosáhnout nějak toho aby výsledné řazení šlo dle položek $vybrane_akcni_stroje co jsou zde "n.id_nomen IN($vybrane_akcni_stroje)" nebo něco na ten způsob. |
||
Tori Profil |
#2 · Zasláno: 9. 4. 2013, 15:19:12
|
||
Alphard Profil |
#3 · Zasláno: 9. 4. 2013, 15:23:04
stackoverflow.com/questions/3892406/what-is-the-ms-sql-server-capability-similar-to-the-mysql-field-function asi to není ideální... což našla i Tori než jsem to odeslal :-)
Ale možná bude lepší seřadit to až v aplikaci. Uložit výsledek s id jako klíčem a pak to vytahat. |
||
Ulet Profil * |
#4 · Zasláno: 9. 4. 2013, 15:49:46
No tohle jsem našel, ale seřadit se mi to dle toho nedaří, řekněme konkrétní příklad:
SELECT n.user_kod_stroje, n.user_vyrobce, n.user_rok_vyroby, n.user_inv_cislo, n.id_nomen, n.skupina_nomenklatur, ast.file_name, nomsku.skupina_otce FROM dba.nomenklatura n LEFT JOIN dba.attach_store ast ON ast.pk = n.id_nomen AND ast.tabulka = 'nomenklatura' AND ast.user_typ_obrazku = 10 LEFT JOIN dba.nom_skup nomsku ON n.skupina_nomenklatur = nomsku.skupina_nomenklatur WHERE n.user_status_stroje IN(1,2) AND n.user_stroj = 1 AND n.id_nomen IN('0100000000000617','0100000000000594') ORDER BY FIELD('0100000000000617','0100000000000594') Udělat to přímo v aplikaci by šlo ale není to v tomto případě moc šťastné řešení, resp. tak je to do teď. |
||
Alphard Profil |
#5 · Zasláno: 9. 4. 2013, 15:55:14
Tazatel hledá alternativu k MySQL, vy byste měl pro MS SQL použít to, co je mu poraděno stackoverflow.com/a/3892438.
|
||
Ulet Profil * |
#6 · Zasláno: 9. 4. 2013, 16:06:10
Alphard:
Možná jsem už po delší době řešení tohoto problém zblbl ale jak tohle implementuji do dotazu? Jestli to chápu dobře tazatel má názvy sloupců tabulky podle kterých to řadí což nemám resp když si je vytáhnu jak bych je použil? Zkraťme ten dotaz na: SELECT * FROM dba WHERE id IN ('7','4') |
||
Alphard Profil |
#7 · Zasláno: 9. 4. 2013, 16:40:16
ORDER BY CASE id WHEN 7 THEN 1 WHEN 4 THEN 2 ELSE 5 END |
||
Časová prodleva: 13 dní
|
|||
Ulet Profil * |
#8 · Zasláno: 22. 4. 2013, 08:58:29
Super sice to trvalo (omlouvam se za zpozdenou odpoved) ale dotaz pomohl, děkuji moc můžete uzavřít.
|
||
Časová prodleva: 11 let
|
0