Vrácení všech výsledků dotazu m:n vazby, i když mají stejné id
- jEhLa
- Člen | 70
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)
- David Matějka
- Moderator | 6445
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
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
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