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.




Kapcsolódó cikkek