Autor Zpráva
radas
Profil *
Zdravím,
potřeboval bych udělat vyběr jednoho záznamu z tabulky kde je relativně hodně sloupců, ale některe sloupce obsahují 0,ty které obsahuji 0 vybrat nechci a nevím které budou mít 0 a které ne . A rád bych to nějak udělal aby jsem to nemusel ověřovat přes php, jde to nějak?
Raději uvedu přiklad

id nazev popis parametr1 parametr2 parametr3 parametr4 parametr5
1 aaa bbb 0 0 3 0 1

a ja bych potřebovall vybrat ten zaznam 1 (to vím to mi stači where id=1) ale potřeboval bych vybrat jen id,nazev, popis a teď jen ty sloupce s nazevem parametr(X) který neobsahuje nulu, tedy v tomto případě parametr 3 a 4

díky za nějaké nápady..
Joker
Profil
radas:
První věc, jestli ty sloupce jsou skutečně parametr1, parametr2,... tak obecné pravidlo: Jakmile musíte indexovat názvy sloupců (sloupec1, sloupec2,...), skoro určitě máte špatně datový model.
A jestli potřebujete něco jako "WHERE podmínku na sloupce", tak tím spíš máte špatně datový model.
Pravděpodobně dáváte do sloupců něco, co by mělo být v řádcích nějaké tabulky.
radas
Profil *
pod tím parametrem si můžete představit cenu třeba pro odběratele, pro prodejce atd..prostě je to rozškatulkovane pro uričtě typy kupujících...
Kajman_
Profil *
V datovém modelu by tedy měly mít ceny zvlášní tabulku např. (id_vyrobku, id_typu_ceny, cena).
radas
Profil *
Kajman:
díky...dobře tak je pomoci id budu mit v jine tabulce ale i tak mi to ještě nestači k tomu výběru...
Kajman_
Profil *
Poté lze napsat dotaz tak, že budou jednotlivé hodnoty pro jeden výrobek ve více řádcích.
radas
Profil *
Kajman:
prosim šlo by to trochu lepe rozepsat...
Kajman_
Profil *
Když uděláte dotaz

select * from nova_tabulk_cen
where id_vyrobku=5
      and cena>0

Dostanete tolik řádků, kolik je pro daný výrobek nenulových cen. SQL je navrhnuté tak, že vrací proměnný počet řádků, ne sloupců.
radas
Profil *
asi jsem to špatně vysvětlil, moje myšlenka právě byla vyhnout se té * za select, abych pak přes php nemusel ověřovat jestli je položka =0 nebo ne(viz uvodní popis situace)...asi to jinak nepůjde...
Kajman_
Profil *
Ale tam nebude žádná cena =0, je tam přece podmínka cena>0.

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: