Eredményeit összehasonlítva két lekérdezés
Eredményeit összehasonlítva két lekérdezés
Ahogy azt ígéri, hatékonyabb ellenőrzést, hogy két lekérdezés vissza ugyanazt az adathalmazt (azonos sorok száma, az ugyanazon a területen értékeket, általában mindegy).
Lekérdezések, mint például ezek:
választ # XA0; item_id, store_id, mennyiséget tbl_invoice_reserv ahol invoice_id = 1154346284 sorrendben item_id, store_id
választ # XA0; item_id, store_id, item_quantity a mennyiséget a tbl_sales_items_details ahol invoice_id = 1154346284 sorrendben item_id, store_id
Van néhány lehetőség, de szeretném hallani, mit javasol, mert én nem szeretem (egy kivételével).
Mínusz az izom nem gurul? Ha nem, akkor próbálja összehasonlítani a rekordok száma egy lekérdezés, valamint a teljes (a nélkül UNION ALL). Ha ND azonos, a rekordok száma egyeznie kell.
Mentsd mindkét LP a folyamba (mindegyik saját), és összehasonlítani a méret és a bináris tartalom patakok, hogy megfeleljen.
> Mínusz az izom nem gurul?
Nem, ha jól értem, azt tervezik, a későbbi kiadások.
> Ha nem, akkor próbálja összehasonlítani száma
> Records külön kérésére, és összesen (UNION
> Minden nélkül). Ha ND ugyanaz, a rekordok száma
> Meg kell egyeznie.
valami ilyesmi, csak forog a fejemben.
> Save mindkét LP a falon
És mi van a patak?
Az adatfolyam.
Az Ön esetében, legyen stand.klass TMemoryStream.
Persze, feltéve, hogy mindkét ND nem túl nagy adatmennyiség.
És, hogy a PHP nem teszi lehetővé, hogy csatlakozni, és külső bibl.moduli (beleértve kifejlesztett Delphi) feldolgozására bizonyos adatokat. Csak azt nem tudom.
Míg kitérve ez a verzió - végzünk két lekérdezést, és hasonlítsa össze az eredményeket:
választ # XA0; count (*) a tbl_invoice_reserv ahol invoice_id = 1154346284
select count (*) a
(
választ # XA0; item_id, store_id, mennyiséget tbl_invoice_reserv ahol invoice_id = 1154346284
unió
választ # XA0; item_id, store_id, item_quantity a mennyiséget a tbl_sales_items_details ahol invoice_id = 1154346284
)
mint union_table
Ki más is azt sugallják, valamit?
* ITEM_ID helyére. Nem yuzal izom, de kevesebb, csak nem.
Abban különbözik a figyelmet.
A bejegyzések száma sem az eredeti LP és a bejegyzések száma
válasszuk külön * from (union-kérelem)
Meg kell egyeznie, ha LP megegyezik
> * A ITEM_ID cserélni. Nem yuzal izom, de kevésbé pontos
> Nem.
kb.
> A különböző figyelmet.
megkülönböztethető az unió alapértelmezés szerint, ha nem tévedek.
ZY Elfelejtettem többet a harmadik kérés:
választ # XA0; count (*) a tbl_sales_items_details ahol invoice_id = 1154346284
Ha igen, akkor még inkább.
és ez lehet, de hosszú távon ez egyszer, hogy törölje a lelkiismeretem. Csak nem bejegyzéseket a suumiruyuschy, ez egyenlő az első.
> Nagyrészt
> Egyszer.
Arra is gondoltam először.
> Csak ne add bejegyzéseket a suumiruyuschy ez
> Első.
Vagy van kevesebb adatot, hanem azok, amelyek ugyanazok, mint az első.
> Vagy ott kevesebb rekordot, de azok, amelyek megegyeznek a
> Első.
Logikus. Róla én nem hiszem.
Általánosságban elmondható, hogy az SQL össze tudja hasonlítani a két táblázatot a hasonlóság a húrok, nem a földeken, a mezők kell lennie :)
Általánosságban elmondható, hogy a kérés egy egyszerű, KIVÉVE:
válasszuk külön col1 származó TABLEA
ahol nem létezik (select * from TableB
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; ahol TableA.col1 = TableB.col1)
De mi a helyzet a allekérdezés MySQL kétséges aggódik :)
A nézet?
És ha csak egy meccs, akkor megy
válassza TABLEA. *
a TABLEA bal külső csatlakozni TableB on (TableA.col1 = TableB.col1)
ahol TableB.col1 NULL
UNION
válassza TableB. *
a TableB bal külső csatlakozni TABLEA on (TableB.col1 = TableA.col1)
ahol TableA.col1 NULL
Itt természetesen arra utal, hogy az ugyanazon a területen mindkét táblában. Ha azok azonosak - az üres eredményt. Tény, hogy az első lekérdezés megtegye azokat az értékeket, amelyek nem szerepelnek a második táblázat, a második - éppen ellenkezőleg.
A másik feltétel - col1 mindkét táblában ne fogadja el null értéket (be kell jelenteni a col1 nem NULL), ellenkező esetben a fókusz nem fog működni. )
választ # XA0; item_id, store_id, mennyiséget tbl_invoice_reserv t1 ahol invoice_id = 1154346284
ahol nem létezik (1 válassza a tbl_sales_items_details t2, ahol t2.invoice_id = 1154346284 és t2.item_id = t1.item_id és t2.store_id = t1.store_id és t1.quantity = t2.item_quantity)
ops, pontosabban az alábbiak szerint:
választ # XA0; item_id, store_id, mennyiséget tbl_invoice_reserv t1 ahol invoice_id = 1154346284
és nem létezik (1 válassza a tbl_sales_items_details t2, ahol t2.invoice_id = 1154346284 és t2.item_id = t1.item_id és t2.store_id = t1.store_id és t1.quantity = t2.item_quantity)
> Szerint [10] van egy kérelmet a kérelem
Az is, de ebben a formában, ahogy a [10], egy alias, ha egy lekérdezés eredménye név-hívás asztalra.
Nos, ez egy kört, ha az érték az e területeken ITEM_ID, store_id együtt egyedi lesz.