SQL Firebird zdvojené řádky
Zdar.
Mám původní dotaz:
select StoreCards.Name, cast(documents.OrdNumber as integer),
ib_datetostring(documents.DocDate$Date,'DD.MM.YYYY'),
l1.ID, storeBatches.Name, StoreCards.EAN, StoreCards.id StoreCardId,
StoreCards.Code KodSklKarty, l1.QUnit, p1.BarCode PoziceOdkud, p1.BarCode PoziceKam
, cast(l1.quantity as integer)/cast(l1.unitrate as integer), StoreEans.EAN, cast(l1.quantity as integer) mnozstvi,
p1.x_uskutecneny_pocet_navstev, p1.X_POCET_NAVSTEV_PRO_VAL, p1.POSITIONTYPE, p1.id,
l1.x_zpracovano, l1.x_EAN_paleta, cast(l1.quantity as integer)/cast((select first 1 coalesce(unitrate,1) from storeunits where storeunits.parent_id = storecards.id and (storeunits.code = 'bal' or storeunits.code='MU')) as integer), storeUnits.code,
cast(cast(l1.quantity as integer)/cast((select first 1 coalesce(unitrate,1) from storeunits where storeunits.parent_id = storecards.id and (storeunits.code = 'bal' or storeunits.code='MU')) as integer) as varchar(10)) ||' '||storeUnits.code
from LogStoreDocuments documents
left join logstoredocuments2 l1 on l1.parent_id=documents.id and documents.documenttype='32'
left join storecards on storecards.id=l1.storecard_id
LEFT JOIN storeBatches on l1.StoreBatch_ID = storeBatches.ID
LEFT JOIN LogStorePositions p1 ON p1.ID = l1.StorePosition_ID
LEFT JOIN StoreUnits on StoreUnits.parent_ID = storecards.id and StoreUnits.code = l1.Qunit
LEFT JOIN StoreEans on StoreEans.parent_ID = storeUnits.ID
LEFT JOIN StoreUnits SU2 on SU2.parent_id = storecards.id and (SU2.code = 'bal' or SU2.code = 'MU')
where DocumentType = '32' and l1.id = '5100000101'
and (x_uzamkl = '&C6' or x_uzamkl = '') order by p1.BarCode
Ve kterém se vyskytují zdvojené řádky díky:
LEFT JOIN StoreUnits SU2 on SU2.parent_id = storecards.id and (SU2.code = 'bal' or SU2.code = 'MU'), který v některých případech vrací 2. totožné řádky.
Tak jsem tento join nahradil subselectem následně:
LEFT JOIN (select first 1 SU2.code from StoreUnits SU2 where SU2.parent_id = storecards.id) SU2 on SU2.parent_id = storecards.id
Ovšem zde hlásí SQL tuto chybu:
SQL error code = -206.
Column unknown.
STORECARDS.ID.
At line 20, column 46.
Napadá někoho, jak z toho ven ?
Ten JOIN tam vůbec nepotřebuješ, stačí do WHERE přidat dlaší podmínku:
Nebo to taky nefunguje?
Já jsem to už pořešil trochu jinak, ale to co ukazuješ je vnořený select a s tím je ten problém, že nezná
vnější storecards.id
To je divný, podobné dotazy jsem používal běžně. Jaká je to verze FB?
Dělám přesčasy a dělám je zadarmo, ale v tento okamžik už nevím a jdu spát.
Boží mlýny melou pomalu, ale jistě.