Autor | Zpráva | ||
---|---|---|---|
Cup Profil |
Dobrý den,
mám ve 3 tabulkách data která mají stejné názvy některých sloupců. a 3 dotazy na 3 tabulky ... SELECT `id`, `datum`, `nazev` `url`, `popis`, `zobrazovat` FROM `foto` SELECT `id`, `datum`, `nazev` `url`, `popis`, `zobrazovat` FROM `video` SELECT `id`, `datum`, `nazev` `url`, `popis`, `zobrazovat` FROM `expedice` Lze to nějak elegantně napsat do jednoho dotazu seřadit podle id, které je unikátní ve všech tabulkách (jedná se o čas v time()) a přidávání nebude tak časté, takže je unikátní ve všech tabulkách a dá se podle něj řadit. No a nakonec to ořezaat na 20 nejnovějších výsledků. Díky za každou radu, odkaz na materiál nebo něco podobného :) |
||
panther Profil |
#2 · Zasláno: 25. 2. 2012, 14:47:00
Cup:
SELECT `id`, `datum`, `nazev` `url`, `popis`, `zobrazovat` FROM foto, video, expedice by nešlo? Nemám kde vyzkoušet.
Každopádně, mít tři stejné tabulky je podle mě nesmysl. Vložil bych vše do jedné a přidal sloupec „kategorie“ s hodnotami foto/video/expedice/... Příp. jen id_kategorie a kategorie vypsat do tabulky vedle.
Druhá věc, která mi tam moc nesedí, ukládáš id je time() , pak tam máš duplicitní sloupec datum. Datum lze snadno získat i z timestampu.
|
||
Cup Profil |
#3 · Zasláno: 25. 2. 2012, 15:01:37
:) datum je textově, nedělám to pro sebe, ale ten známej co to tam přidává tam někdy dá ... leden - únor 2010 ... někdy 22.02.2010 ... a tak prostě, id mám kvůli tomu abych to pak mohl seřadit časově ze všech tabulek,
3 mám proto, že u každé tabulky mám ještě jiné sloupce, možná jsem to tak mohl udělat, ale mám komplet celou obsluhu už napsanou, tak se mi to nechce měnit, zkusím to nějak dostat ven dotazem, ten dotaz co si psal jsem taky zkoušel, ale nejede háže to Column 'id' in field list is ambiguous Dík, za radu, ale musím to nějak vymyslet. |
||
Tori Profil |
#4 · Zasláno: 25. 2. 2012, 15:12:54
Cup:
Sloupec datum by měl být datového typu DATE nebo DATETIME. Pak by šlo snadno nastavit aktuální čas jako výchozí hodnotu pro nové řádky, a 1.známej by měl míň práce, 2. měl byste všude datum ve stejném formátu, 3. mohl byste podle toho datumu i řadit a filtrovat (na co teď asi využíváte sloupec s timestamp). |
||
Časová prodleva: 3 dny
|
|||
Cup Profil |
#5 · Zasláno: 28. 2. 2012, 09:27:27
:) Ve skutečnosti sem udělal takovou chybu v základním návrhu ... že to stojí uplně k svini a pokud to budu ještě někdy upravovat, tak to budu muset celý překopat, udělat to na jednu tabulku, jak jste tu psali a celkově změnit logiku, teď když už to jede a on mi řekl kde se mu co líbí a co nelíbí a co chce ještě překopat, už vím, že jsem to udělal fakt naprd, nechal na tom 4 dny a udělal si fakt hodně problémů. Chjo, kdybych pořádně věděl co chce, tak bych to měl za 2 dny.
Jinak jsem ty data vytáhl dotazem SELECT * FROM foto UNION SELECT * FROM video UNION SELECT * FROM expedice ORDER BY datum LIMIT 20 ale jak říkám, celková logika kterou sem pak musel všemožně obcházet a dělat spoustu práce navíc, je fakt k ničemu. |
||
Časová prodleva: 13 let
|
0