Autor Zpráva
Recik
Profil *
Dobrý den,

mám problém se SELECTEM, popíši.

SELECT * FROM uvod,uvodsmall,uvodsmallstred,uvodsmallpravy WHERE kategorie='aktualita' ORDER BY id DESC LIMIT $x,5

je špatně, vím..

Poprosil bych vás, jestli by jste mi neporadili, jak zaroven vyselectovat ze 4 tabulek sloupec kategorie.

Děkuji Vám za pomoc
AM_
Profil
Dost divně položený dotaz, spíš se snažíš vyselectovat data ze 4 tabulek z řádků, kde je kategorie rovná aktualitě, a ne sloupec kategorie ze 4 tabulek, alespoň tak to z toho query chápu.
SELECT * FROM uvod JOIN uvodsmall ON (uvod.kategorie = 'aktualita' AND uvod.kategorie=uvodsmall.kategorie) JOIN uvodsmallstred ON (uvod.kategorie=uvodsmallstred.kategorie) JOIN uvodsmallstred ON (uvod.kategorie=uvodsmallpravy.kategorie) ORDER BY uvod.id DESC LIMIT $x, 5
Nějak takhle by to mohlo fungovat. Ale zavání to otřesným návrhem tabulky, jednak bys mohl psát do fóra o databázích s PHP to nemá lautr nic společného, a možná bys raději mohl popsat, co tvoříš, aby ti tu někdo pomohl vytvořit lepší strukturu tabulek.
Recik
Profil *
Omlouvám se, nepsal jsem zde do diskuzí nikdy, takže nevím kam co řadit i když jde o dtb nebo php atd.

Ano, jak jsi popsal 4 tabulky kde je řádek kategorie rovný aktualitě. Musel bych v tomto případě jak jsi napsal dát ještě před ORDER to WHERE kategorie='aktualita' ??

I tak díky za odepsání
AM_
Profil
Promiň, viz tučná změna v předchozím příspěvku, nějak mi to předtím vypadlo. Tím vyfiltruješ jen řádky, kde je kategorie=aktualita.
Tak, jak jsi to psal ty, by to asi mohlo fungovat taky, jen by to bylo mnohem náročnější na paměť a čas SQL serveru - tabulky je lepší spojovat pomocí JOIN ON, protože tak se vyberou jen související řádky, když je sloučíš přes čárku a vybíráš where, vytvoří se ti všechny kombinace řádků (což je součin počtu řádků ve všech tabulkách, což půjde do velkých čísel) a pak se teprve vyberou vyhovující.
Recik
Profil *
SELECT uvod.*,uvodsmall.*,uvodsmallstred.*,uvodsmallpravy.* FROM uvod LEFT JOIN uvodsmall on uvodsmall.kategorie='preview' LEFT JOIN uvodsmallstred ON uvodsmallstred.kategorie='preview' LEFT JOIN uvodsmallpravy ON uvodsmallpravy.kategorie='preview' WHERE uvod.kategorie='preview' ORDER BY id DESC LIMIT $x,5


Tohle by také šlo ? (to co jsi napsal nefunguje) :(
Recik
Profil *
SELECT uvod.*,uvodsmall.*,uvodsmallstred.*,uvodsmallpravy.* FROM uvod LEFT JOIN uvodsmall on uvodsmall.kategorie='preview' LEFT JOIN uvodsmallstred ON uvodsmallstred.kategorie='preview' LEFT JOIN uvodsmallpravy ON uvodsmallpravy.kategorie='preview' WHERE uvod.kategorie='preview' ORDER BY id DESC LIMIT $x,5


Tohle by šlo ?to co jsi napsal před tím nefunguje :(
AM_
Profil
Určitě to hází nějakou chybu. Věštit bohužel neumím...
Tvé řešení by nešlo, v JOIN podmínce musíš mít nějaké porovnání sloupce jedné a druhé tabulky. Zkus si to říct slovy, "spoj takové dva řádky, kde v prvním je kategorie=preview", to je hloupost, jak pozná, který k němu má přiřadit?

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