Autor | Zpráva | ||
---|---|---|---|
Recik Profil * |
#1 · Zasláno: 26. 3. 2009, 22:10:17
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 |
#2 · Zasláno: 26. 3. 2009, 22:17:52 · Upravil/a: AM_
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 * |
#3 · Zasláno: 26. 3. 2009, 22:22:39
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 |
#4 · Zasláno: 26. 3. 2009, 22:29:46
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 * |
#5 · Zasláno: 26. 3. 2009, 22:44:49
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 * |
#6 · Zasláno: 26. 3. 2009, 22:45:16
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 |
#7 · Zasláno: 26. 3. 2009, 22:51:41
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? |
||
Časová prodleva: 15 let
|
0