Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   разные результаты SQL выборки (http://forum.oszone.net/showthread.php?t=79253)

Vlad Drakula 13-02-2007 13:31 549369

разные результаты SQL выборки
 
есть два запроса:

select r1.id from rt_relation_record as r1, rt_relation_record as r2
where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id

возврящает порядка 530 записей

select id from rt_relation_record where id in (
select r1.id from bnt_rt_relation_record as r1, bnt_rt_relation_record as r2
where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id
)

возвращает порядка 140 записей

куда делись все остальные записи???

dmitryst 13-02-2007 13:49 549384

Vlad Drakula А какой из результатов правильный? И вообще, что за БД?

Vlad Drakula 13-02-2007 14:27 549408

dmitryst
база MySQL 4.1.16
а о правильности ответа ничего сказать не могу т.к. по идее должны эти оба запросы выдавать одно и тоже....

dmitryst 13-02-2007 14:48 549417

Vlad Drakula Меня смущает структура "...as...as". ИМХО, второ вариант правильнее. Сейчас гуру подойдут, побьют :)

Vlad Drakula 13-02-2007 15:17 549440

dmitryst
Цитата:

ИМХО, второ вариант правильнее.
как второй вариант может быть правиьлнее если он включает результаты выборки первым вариантом?

Цитата:

Меня смущает структура "...as...as".
вроде бы стандартная практика для того чтобы в одном запросе работать снесколькими эгземплярами одной таблицы.

vadimiron 14-02-2007 01:56 549675

Vlad Drakula

А что это такое?
Цитата:

bnt_rt_relation_record
Просто ошибка или другая таблица?

Таблица же завётся:
Цитата:

rt_relation_record

dmitryst 14-02-2007 10:54 549788

Vlad Drakula Я имел в виду не синтаксические ошибки, а логические (т.е. написано правильно, но работает не так, как надо). Я обычно для теста создаю маленькие тест-таблицы и пошагово отлаживаю выборку (с контролем того, что выдает каждая)

Abell2000 18-02-2007 08:43 551891

Я так думаю что
select distinct r1.id from rt_relation_record as r1, rt_relation_record as r2
where r1.id > r2.id and r1.master_rt_record_id = r2.master_rt_record_id and r1.slave_rt_record_id = r2.slave_rt_record_id
вернет как раз порядка 140 записей


Igor_I 18-02-2007 11:39 551926

А что говорит EXPLAIN?
Вообще-то таблицы действительно разные.


Время: 13:13.

Время: 13:13.
© OSzone.net 2001-