Alias u self join v nette database

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Kabíček
Člen | 14
+
+1
-

Ahoj,

mám tabulku items s produktama, kde jsou masterpoložky a varianty. Vazba je přes sloupec items_id. Potřebuji vypisovat masterpoložky podle hodnoty variant. Potřebuji tedy v Nette Database sestrojit následující dotaz:

select items1.* from items as items1
left join items as items2 on items2.items_id = items1.id
where items2.uchar0='2'

Lze to nějaký způsobem udělat?

David Matějka
Moderator | 6445
+
0
-

mozna neco jako

->table('items')->where(':items.uchar0', 2)
Tomáš Kabíček
Člen | 14
+
0
-

To právě vyhodí error : Syntax error or access violation: 1066 Not unique table/alias: ‚items‘

Tam chybí ty aliasy :-(

Tomáš Kabíček
Člen | 14
+
0
-

Řekl bych, že to nepůjde, zřejmě to budu muset udělat přes ->query()

vvoody
Člen | 910
+
0
-

mozno item namiesto items

->table('items')->where(':item.uchar0', 2)
Tomáš Kabíček
Člen | 14
+
0
-

To zase háže chybu Ambiguous joining column in related call.

Nejde mi zjistit, který sloupeček by to mohl dělat, jestli id v ON klauzuli. Zkoušel jsem i přes ->select() sloupečky označovat buď :item.name nebo items.name. Všechno málo platné…

vvoody
Člen | 910
+
0
-

pastni sql dump, nech nestrácame čas typovaním kde môže byť chyba ;)

Tomáš Kabíček
Člen | 14
+
0
-

Dump tabulky: http://www.uschovna.cz/…ZL6T8IZ-KZM/

Díky za vyzkoušení :-)