Zdravím,
řeším menší problém. Mám dvě tabulky, recepty a recenze, a na hlavní straně chci mít deset nejnovějších příspěvků z obou těchto tabulek. Možná jsem to špatně zformuloval, tak pro jistotu ještě jednou - na hlavní straně chci mít 10 příspěvků, které jsou nejaktuálnější (vybírané z obou tabulek).
Jediné, co mě momentálně napadá, je vybrat z obou tabulek 10 nejnovějších příspěvků, a potom přímo v PHP ze dvaceti příspěvků vybrat deset nejnovějších. To mi ale připadne značně neefektivní, protože bych musel dělat dva dotazy a potom ještě výsledek po výsledku procházet.
Mimochodem, tabulky mají různé sloupce, ale obě mají sloupec datum typu datetime s datem vložení příspěvku, takže podle toho bych to chtěl řadit.
Nevíte prosím někdo, jestli to nejde nějak jednodušeji, ideálně jedním dotazem?
Pravděpodobně to nebude nic těžkého, ale nenapadá mě, co bych měl vyhledat.
Díky moc předem!
MySQL - Nejnovější záznamy ze dvou tabulek Vyřešeno
- lamin_cz
- Level 2.5
- Příspěvky: 314
- Registrován: říjen 12
- Bydliště: Kostelec u Holešova
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: MySQL - Nejnovější záznamy ze dvou tabulek
SELECT * FROM recepty, recenze ORDER BY datum LIMIT 10
Ale problém nastane při rozdílných názvech sloupečků ...
Ale problém nastane při rozdílných názvech sloupečků ...
- CPU: Cx6x86L-PR150+
- MB: XT PRO2
- GPU: integrovaná
- RAM: 28Mb SDRAM
Re: MySQL - Nejnovější záznamy ze dvou tabulek
Díky za odpověď! Tenhle dotaz jsem taky zkoušel, ale ten dělá bordel. V čistém mysql mi to vrací false, v dibi to zase háže 'Column 'datum' in order clause is ambiguous'. A obdobně to dělá i když zkouším řadit třeba podle ID.
Mám teda zavrhnout jeden dotaz a prostě vybrat 10 nejnovějších z obou tabulek a potom to vytřídit v PHP?
Mám teda zavrhnout jeden dotaz a prostě vybrat 10 nejnovějších z obou tabulek a potom to vytřídit v PHP?
- lamin_cz
- Level 2.5
- Příspěvky: 314
- Registrován: říjen 12
- Bydliště: Kostelec u Holešova
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: MySQL - Nejnovější záznamy ze dvou tabulek
Protože sloupec datum mají oba dva ... a on neví který použít ... takže to zkus ORDER BY recepty.datum ASC, recenze.datum ASC
- CPU: Cx6x86L-PR150+
- MB: XT PRO2
- GPU: integrovaná
- RAM: 28Mb SDRAM
Re: MySQL - Nejnovější záznamy ze dvou tabulek Vyřešeno
Díky za odpověď! Tohle už sice něco vypíše, ale funguje to nanejvýš pofidérně. Vypisuje to např. první (tj. nejstarší) recenzi pětkrát, i u recenzí to vypisuje sloupec ingredience, přičemž tabulka recenzí ho vůbec neobsahuje,...
Nakonec jsem to vyřešil přes ty dva dotazy:
Asi to není nejrychlejší možná metoda, ale funguje to, a to mi stačí
Nakonec jsem to vyřešil přes ty dva dotazy:
Kód: Vybrat vše
$prispevky = array();
$recepty = dibi::query("SELECT * FROM [recepty] ORDER BY [datum] DESC LIMIT 10");
foreach ($recepty AS $vysledek){
$recept = new Recept($vysledek);
$prispevky[(string)$recept->datum] = $recept; // uložím si instanci do pole, klíč je datum příspěvku
}
$recenze = dibi::query("SELECT * FROM [recenze] ORDER BY [datum] DESC LIMIT 10");
foreach ($recenze AS $vysledek){
$recenze = new Recenze($vysledek);
$prispevky[(string)$recenze->datum] = $recenze; // uložím si instanci do pole, klíč je datum příspěvku
}
krsort($prispevky); // roztřídí pole recenzí a receptů podle klíčů (data) od největšího k nejmenšímu
$i = 0;
foreach ($prispevky as $prispevek) {
if ($i <= 10) {
$i++;
$prispevek->vykreslit();
} else {
break;
}
}
Asi to není nejrychlejší možná metoda, ale funguje to, a to mi stačí
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 12
- 3259
-
od amirinda
Zobrazit poslední příspěvek
14 říj 2023 16:39
-
-
Který z těchto dvou mobilů vybrat
od Lukáš.v89 » 06 úno 2024 00:50 » v Mobily, tablety a jiná přenosná zařízení - 8
- 1984
-
od Smile
Zobrazit poslední příspěvek
07 úno 2024 07:40
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti