Oznámení
dibi, postgresql a order by
před 3 lety
- Hobbit
- Člen | 1
Zdravim,
s dibi jsem v podstate naprosty zacatecnik, asi neco nechapu, ale:
uz tu par hodin resim jednu vec, ktera mene skutecne vytaci – a sry, ale
dokumentace je celkove vice nez skoupa, nebo jak jsem napsal proste ji
nechapu.
potrebuji napsat naprosto primitivni dotaz (v tabulce ipranges jsou je
proste hromada cidr zaznamu):
SELECT range FROM ipranges WHERE ‚9.9.172.74‘ <<= ipranges.range ORDER
BY masklen(ipranges.range) DESC LIMIT 1;
primo v sql to je jedna radka, ale do dibi se mi zaboha nedari dostat spravne konstrukci okolo ORDER BY.
nebyl by nekdo natolik ochotny a tento primitivni dotaz neprepsal do dibi syntaxe?
Editoval Hobbit (26. 5. 2016 11:46)
před 3 lety
- Honza Kuchař
- Backer | 1649
Nechápu, co ten dotaz má dělat.
před 3 lety
- Milo
- Nette Core | 1119
@Hobbit asi už s křížkem po funusu.
Jestli používáš plain query:
$db->query('
SELECT
range
FROM
ipranges
WHERE
%s::inet <<= ipranges.range', '9.9.172.74', '
ORDER BY
masklen(ipranges.range) DESC
LIMIT 1
');
a jestli fluent, je to trochu tricky, protože ->orderBy()
očekává modifikátor %by
, viz. Fluent.php
source, a
musí se dát do dvojrozměrného pole, ve kterém jsou prvky expandovány
modifikátorem %ex
:
$db
->select('range')
->from('ipranges')
->where('%s::inet <<= ipranges.range', '9.9.172.74')
->orderBy([['masklen(ipranges.range)']]);