Autor | Zpráva | ||
---|---|---|---|
Paja_ Profil * |
#1 · Zasláno: 27. 10. 2009, 21:51:00
Ahoj,
potřeboval bych poradit v následující věci. Chtěl bych vypisovat novinky z třech různých tabulek podle data (id, popis, datum), ale nějak se nemůžu dopracovat ke správnému výsledku. Spíš nevím, jak správně spojit tři babulky. Na googlu jsem sice něco vyhledal, ale chytrý z toho moc nejsem a ani nevím, jestli je to vůbec možné. Díky za jakýkoli tip. |
||
SwimX Profil |
#2 · Zasláno: 27. 10. 2009, 22:10:58
Paja:
tabulky se obvykle psojijí JOINem, ale musí mít nějakou provázanost. Třeba tabulka kategorie (id, název), a druhá tabulka podkategorie (id, název, id_kategorie). pak se spojí dohromady takto: SELECT k.nazev as kat, p.nazev as pod FROM kategorie k JOIN podkategorie p ON k.id = p.id_kategorie pokud chcete ale prostě vybrat všechna data ze třít abulek a vypsat je, pak vám stačí SELECT popis, datum FROM tab1, tab2, tab2 |
||
Paja_ Profil * |
#3 · Zasláno: 28. 10. 2009, 18:33:16
Svůj první dotaz jsem asi špatně položil. Pro zjednodušení jsem tabulky omezil na dvě (ze třech bych to asi už vůbec nepochopil). Chtěl bych na úvodní stránku vypisovat "aktuality", které by byly řazeny podle data z těch dvou tabulek. Tabulky mají různý počet sloupců.
např.: v první bude - id, popis, datum, komentare, tabulka v druhé - id, nazev, popis, datum, komentare, tabulka Takže ve finále by v záložce aktuality bylo vypsáno posledních (x) aktualit tvořených z těch dvou tabulek. Potřebuju to nějak vecpat do array - podmínkama už bych si rozdělil co k čemu. Pokud to někdo pochopí, budu rád, mě už to hlava nebere ;) |
||
Paja_ Profil * |
#4 · Zasláno: 28. 10. 2009, 18:57:10
jen bych doplnil, že pokud použiji
mysql_query("SELECT * FROM novinky, zapisnik WHERE verejne = 1 ORDER BY datum DESC LIMIT 20 ") or die(mysql_error()); tak mi to vypíše chybu "Column 'verejne' in where clause is ambiguous", když podmínku odstraním, nastane stejný problém s batem |
||
pEeLL Profil |
#5 · Zasláno: 28. 10. 2009, 21:18:00
Paja:
ak mi to vypíše chybu "Column 'verejne' in where clause is ambiguous tohle je myslim tim ze mas sloupec verejne v obou tabulkach. bud jeden prejmenuj nebo definuj ve ktere tabilce se ma verejne rovnat jedne. |
||
SwimX Profil |
#6 · Zasláno: 29. 10. 2009, 07:35:03
Paja:
tato chyba je způsobená tím, co píše pEeLL řešení: mysql_query("SELECT * FROM novinky, zapisnik WHERE novinky.verejne = 1 AND zapisnik.verejne = 1 ORDER BY datum DESC LIMIT 20 ") or die(mysql_error()); |
||
Kajman_ Profil * |
#7 · Zasláno: 29. 10. 2009, 17:08:18
Hledáte union
(select nadpis_novinky as nadpis, datum from novinky where verejne=1 order by datum desc limit 20) union (select nadpis_zapisku as nadpis, datum from zapisky where verejne=1 order by datum desc limit 20) order by datum desc limit 20 |
||
Paja_ Profil * |
#8 · Zasláno: 29. 10. 2009, 18:28:09
Kajman:
Co se týče UNIONu, tak ten jsem našel, buhužel jsem neměl stejný počet a názvy sloupců, ale Vaše kouzelné slovíčko "AS" mi dosti pomohlo a vše šlape, jak jsem si představoval. On už to sice zmínil SwimX, ale bylo tam toho na mě moc a nepochopil jsem to. Děkuji Vám všem za příspěvky! |
||
Časová prodleva: 14 let
|
0