tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

ako sa zapisujú aliasy a výraz table.colulm

Čamo
Člen | 697

Zdravím, ja som pred týždňom prvý krát videl dibi, tak by som sa ak dovolíte spýtal asi úplne triviálne veci.
Potrebujem napísať takéto niečo:

select * from order o
left join
order_address o_a
on
o.id = o_a.id
where id = x;

Neviem ako spraviť

  1. Escapovanie názvu order. Stačí to dať do [order]?
  2. Ako k tomu pripísať alias? [order] as [o]???
  3. Ako sa zapisuje o.id? [o].[id]???

Ďakujem.

EDIT:
Ešte by som potreboval poradiť ako správne v dibi napísať dotaz s AND v spojení s ON:

'select o.*,
oa.name, oa.surname, oa.street, oa.city, oa.post_code, oa.country
from order as o
join
order_address as oa
on o.id = oa.order_id AND o.id = '.$id.'
join
order_item as oi

on o.id = oi.order_id'

Editoval Čamo (5. 4. 2015 1:33)

Milo
Nette Core | 1119

Dibi se dá používat více způsoby. Jedním z nich je psaní celého dotazu:

$db->query('
    SELECT
        [o].*,
        [oa].[name],    -- jedna možnost
        [oa.surname],   -- nebo takhle
        oa.post_code    -- někdy lze úplně vynechat, prostě pure SQL
    FROM
        [order] AS o
        JOIN order_address AS oa ON o.id = oa.order_id AND o.id = %i', $id, '
        JOIN ....
');

Ale hlavně, nikdy nevkládat proměnnou přímo do SQL řetězce (tak jak to máš ty), ale používat modifikátory jako jsou %i %s %n atd…

Komentáře

Čamo:

Díky.

před 4 lety