Vyber z dvoch tabuliek naraz
- peteret
- Člen | 3
Dobrý den chcel by som sa spýtať ako selektnuť vec z inej tabulky
$advertising = $this->database->table("advertising");
$advertising->select("advertising.title");
$advertising->select("advertising.city");
$advertising->select("advertising.description");
$advertising->select("advertising.time");
$advertising->select("advertising.type");
$advertising->select("advertising.price");
$advertising->select("advertising.vip");
$advertising->select("advertising.id");
$advertising->select("advertising.views");
$advertising->select("cities.cityid")->where("cities.cityid = advertising.city");
- emololftw
- Člen | 79
Zdravím, máš nastavenou referenci (cizí klíč) mezi tabulkami? Tím
definuješ vazby mezi tabulkami na sebe. Poté je jedno řešení použít
metodu ref()
- peteret
- Člen | 3
SELECT
advertising.title,
advertising.city,
advertising.kraj,
advertising.description,
advertising.time,
advertising.type,
advertising.price,
advertising.time,
advertising.id,
advertising.views,
advertising.vip,
advertising.user,
cities.fullname,
photos.path,
photos.thumb,
photos.uniqueid
FROM advertising
JOIN photos
ON advertising.id = photos.uniqueid
JOIN cities
ON advertising.city = cities.cityid
WHERE kraj = ? AND typee = ? AND time = ? AND vip = ?
GROUP BY advertising.id
ORDER BY advertising.time DESC
LIMIT ?, 5
- Melebius
- Člen | 16
Pokud vím, Database
Explorer neumí obecný JOIN, takže pokud si nevystačíte s metodami ref()
,
related()
apod., je třeba sestoupit o úroveň níž a zadat dotaz ručně v rámci Database Core:
$rows = $this->database->fetchAll(
'SELECT ...
JOIN ...
WHERE ...',
$parametry...);
Ale tady si myslím, že by ref()
mohl úplně
stačit, např.:
$advertising->ref('cities', 'city')->fullname;
A pokud jsou v DB správně nastavené cizí klíče, není u
ref()
nutné zadávat druhý parametr.
Editoval Melebius (2. 12. 2021 10:00)