Форум "DataBase и SQL"
Язык запросов баз даных
Сравнение результатов двух запросовКак еффективно проверить, что 2 запроса возвращают одинаковый набор данных (одно и то же кол-во строк, одни и те же значения полей, в общем, всё одно и то же). Запросы типа таких: select item_id, store_id, quantity from tbl_invoice_reserv where invoice_id=1154346284 order by item_id, store_idselect item_id, store_id, item_quantity as quantity from tbl_sales_items_details where invoice_id=1154346284 order by item_id, store_idУ меня есть несколько вариантов, но хотелось бы услышать, что предложите вы, т.к. мои мне не очень нравятся (за исключением одного).
|
|
Пока останавливаюсь на таком варианте - выполняем два запроса и сравниваем результаты: select count(*) from tbl_invoice_reserv where invoice_id=1154346284select count(*) from Может кто ещё что-то предложит? |
|
ошибся, тут ещё нужен третий запрос select count(*) from tbl_sales_items_details where invoice_id=1154346284 |
|
#3 Go © 01.08.06 12:18:39
хм.. а может нагляднее это лефт_джойнами делать !? |
|
>#3 Go © думал и об этом, но тут вдруг увидел, что у меня уже _изначально_ есть инфа о кол-ве записей для "первого" и "третьего" запросов, таким образом, мне нужно выполнить только один, "второй" запрос (с union), и то только в случае, если совпадает инфа о кол-ве записей для "первого" и "третьего" запроса. |
|
#5 Andrey © 04.08.06 13:56:07
Таксь... ну если сервер поддерживает full outer join, то можно так (id - поле с реквизитом not null или просто то поле которое должно быть заполнено): select a.id, b.idесли сей запрос вернет 1+ строк, значит множества a.invoice_id=1154346284 не равно множеству b.invoice_id=1154346284 по критерию определенному в условии джоина. Если сервер не поддерживает full outer join (Оракл например не поддерживает), то его можно сэмулироать с помощью комбинации select ... left join
|
Написать ответ |
|
