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)";
problém je v řazení které bohužel v druhém dotazu nijak to neovlivním (je to databáze na jinám serveru kam nemám žádný přístup)
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
http://stackoverflow.com/questions/3892406/what-is-the-ms-sql-server-capability-similar-to-the-mysql-field-function
Alphard
Profil
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 *
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')
mi vrátí: Lookup Error - SQL Server Database Error: 'FIELD' is not a recognized built-in function name.
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
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 *
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') 
jak bych dosáhlo toho aby se to řadilo dle pořadí těch položek v INu?
Alphard
Profil
ORDER BY CASE id
     WHEN 7 THEN 1
     WHEN 4 THEN 2
     
     ELSE 5
   END
Ulet
Profil *
Super sice to trvalo (omlouvam se za zpozdenou odpoved) ale dotaz pomohl, děkuji moc můžete uzavřít.

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: