Stránka 1 z 1

Konstrukce SQL dotazu

Napsal: pát 14. lis 2008, 15:31
od WoiTa
Zdravím, najde se zde dobrá duše, která pomůže s podmínkou sql dotazu?
Níže uvedená podmínka (to za WHERE) funguje korektně, ale jen pokud je atribut CisloSmlouvy(varchar) roven řetězci "1" nebo podobnému.
Problém nastane při exportu více smluv. Pak má CisloSmlouvy podobu třeba "1, 2" a LIKE už nedokáže rozluštit, že tam ta jednička nebo dvojka je. Přitom bych potřeboval pravý opak.
Schéma databáze bohužel moc měnit nemůžu. Leda tak přidat novou tabulku. Napadlo mě vytvořit si dočasnou tabulku s jedním atributem - číslem, který dostanu rozparsováním toho řetězce "1, 2, 3, ..." a tu pak nějak porovnávat. Nenapadá někoho elegantnější řešení?

Kód: Vybrat vše

SELECT * FROM DatabazeNEW WHERE (SELECT Count(ID) AS ExportsCount FROM ExportySmluv WHERE DatabazeNEW.ID LIKE CisloSmlouvy) = 0 

Re: Konstrukce SQL dotazu

Napsal: pát 14. lis 2008, 17:26
od OndraSter
mysql query ( "ten tvůj dotaz" );

pak si vytáhneš všechny čísla do tvaru "1, 2, 3" atd.

A pak jen zavoláš SQL:

mysql query ( 'SELECT neco FROM tabulka WHERE cisloSmlouvy IN (1, 2, 3)' ); (za předpokladu, že cisloSmlouvy je INT)

Inspiruj se případně pomocí http://www.firstsql.com/tutor3.htm#predicate - tam maj přesnější popis toho IN.

Re: Konstrukce SQL dotazu

Napsal: pát 14. lis 2008, 18:09
od Teuzz
ideálně nebuďme prasátka a dejme za dotaz ještě středník, aby to bylo opravdu v SQL a ne v MySQL SQL :-P

mysql_query("SELECT neco FROM tabulka WHERE cisloSmlouvy IN (1, 2, 3);");


// OS - Tak já nepsal ani mysql_query ale mysql query, takže jsem očekával, že se tím jen inspiruje :roll:. Nemám ve zvyku říkat přesný kód, jen navádět - mým cílem je naučit ostatní, aby se nad tím zamysleli a ne jednoduše kopírovali.