|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.03.2013, 18:16 | #11 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
LEFT JOIN дублирует исходящие записи если находится несколько по услувию ON . Сначала разберитесь что нужно получить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
30.03.2013, 19:02 | #12 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
|
|
01.04.2013, 10:44 | #13 | |
Новичок
Джуниор
Регистрация: 29.03.2013
Сообщений: 5
|
Цитата:
А вот причём здесь записи, так дело вот в чём (читайте тему внимательнее), есть запрос SELECT * FROM system, который выдаёт 166 записей (проверял, дубликатов нет, всё по списку, как и надо. Вот это и есть тот самый набор данных, а 166 - число строк, т.е. записей). Далее надо было добавить доп. информацию в ту-же таблицу о мониторах, ЦП, ОЗУ, CD/DVD и винчестерах. Склепав новый запрос обнаружил несоответствие в количестве выводимых записей. Когда получалось больше - это дубли, а некоторые записи отсутствовал, когда меньше (спасибо, кэп) отсутствовали записи. Вот откуда эти числа и вот почему я по ним сверяюсь в первую очередь (т.к. каждый раз лопатить от 152 до 73817, проверяя соответствия по образцовому результату [ака "SELECT * FROM sysyem"], когда и так ясно, что тут уже не то, согласитесь глупо). Народ, проблему решил. Г-н Stilet дал довольно красивый запрос с LEFT JOIN, а г-н EVG_M поправил на счёт запятых. В итоге проблема крылась в таблице с процессорами. По неизвестной причине (буду решать) она также наполнялась данными без маркировки 'CPUn', из-за чего строка "processor_device_id = 'CPU0'" отсеивала эти ЦП, а без неё выдавала свыше 40 тыс. записей. Сейчас таблица ЦП из запроса убрана, как и условия с ним связанные, и всё встало как положено: 166 записей, пробежался по списку - всё чётко. Спасибо всем, кто отвечал и помогал решить пробелму, тема за сим закрыта. С уважением ко всем ответившим, Владимир. |
|
01.04.2013, 10:53 | #14 | |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
Цитата:
он выдает набор данных, а далее надо смотреть а что за данные он дает, и вот тут вы и поймете, что даже в миллионе строк данных может быть только 1 "запись". поэтому если убрать условие то вы можете получить НЕ МЕНЕЕ 166 строк НД. следовательно сколько бы там этих строк не было, "записей" из главной таблице вы получите только 166 и НЕ БОЛЕЕ. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос SQL | stas45rus | БД в Delphi | 3 | 29.11.2012 18:04 |
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) | Машуля | SQL, базы данных | 4 | 06.05.2010 21:09 |
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi | S_Yevgeniy | Помощь студентам | 1 | 27.10.2009 06:26 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |