Vrácení všech výsledků dotazu m:n vazby, i když mají stejné id

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
jEhLa
Člen | 70
+
0
-

Dobrý den,
chtěl bych vás poprosit o radu? Pomocí NTDB pokládám tento dotaz:

SELECT [contacts].*,[contacts_contacts].[parent_id]
FROM [contacts]
LEFT JOIN [contacts_contacts] ON [contacts].[id] = [contacts_contacts].[contact_id]
WHERE ([contacts_contacts].[parent_id] IN (15, 13, 10, 1, 11, 4, 3, 14, 12, 2))

Jedná se o dotaz m:n na všechny související kontakty k požadovaným id.
Když tento dotaz vyzkouším v admineru, tak to vrátí správný počet výsledeků. Ale v NTDB Selection mi vrátí jen asi polovinu, protože se tam některé záznamy se stejným id opakují. Já bych však potřeboval všechny. Protože mají rozdílný parent_id a já je potřebuji pak následně zpracovat a rozdělit do příslušných polí.
Když ze selectu vyřadím id. Tak to vrátí vše co potřebuji. Ale zase mi chybí to id :-/

Mohl by mě někdo prosím nakopnout?
Děkuji

Editoval jEhLa (12. 3. 2016 17:40)

CZechBoY
Člen | 3608
+
0
-

Zkus pridat

$selection->group('contacts.id  contacts_contacts.parent_id')
jEhLa
Člen | 70
+
0
-

Bohužel, ani toto nic nezměnilo :-/ Výsledek je pořád stejný.

CZechBoY
Člen | 3608
+
0
-

Jak to vypisuješ?

David Matějka
Moderator | 6445
+
0
-

Ano, tohle je u NDBT (bohuzel) ocekavane chovani. Tvuj query jde trochu proti myslence NDBT, viz https://doc.nette.org/…ase/explorer

Hlavní myšlenkou je načítání dat pouze z jedné tabulky a tak, aby se tyto dotazy pokládaly jen jednou.

takze bys mel pouzit nejaky ref/related. Mozna bych jako hotfix zkusil ten sloupecek s ID nejak aliasovat…

jEhLa
Člen | 70
+
0
-

Mno to vím že to jde trošku proti NTDB. Ale já nad tím mám postavené takové jednodušší ORM.
Mám kolekci Entit. A nad každou z nich volám dotaz na další související Entity stejného typu. Aby se ale při iterování nad kolekcí neposílal ten dotaz pořád dokola jen pro jedno id. Tak si při prvním dotazu zjistím jaké všechny entity mám v kolekci a vytáhnu si z db všechny záznamy pro danou kolekci. Jenže je právě problém v tom, že se tam ty záznamy opakují a tím že mají stejné id, tak mi je NTDB sloučí. Ale já nemám už pak možnost přiřadit vrácený řádek ke všem entitám které jsou na ni napojeny :-/ Doufal jsem že existuje nějaký ‚force‘, aby mi je neslučoval podle id :-/

David Matějka
Moderator | 6445
+
0
-

Aby se ale při iterování nad kolekcí neposílal ten dotaz pořád dokola jen pro jedno id.

tohle dela NDBT kdyz pouzijes ref/related samo

jEhLa
Člen | 70
+
0
-

To vím. Zkusím to vymyslet tedy nějak jinak, abych mohl využít ref/related.