|
|
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. Результат этого запроса в два раза больше, чем есть на самом деле. Проверял, что там происходит так: Код: plaintext 1. 2. Количество возвращенных строк = кол-во нужных строк в таблице cash * кол-во нужных строк в таблице calc почему так происходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 00:54 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
SELECT cash.* as a - это опечатка :) следует читать как SELECT cash.* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 01:11 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
автор писал:Проверял, что там происходит так: Там - это где? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:20 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Проверял, что происходит в запросе. Первый вариант возвращал одно только число - вот я и посмотрел, что "там" со строками происходит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:29 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Даны два запроса. Первый неправильный, а второй "там". Каким образом второй получен из первого? И откуда известно, что второй правильный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:34 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Саныч,первый запрос с Sum, второй почти такой же ,но без суммирования,возвращающий все записи.Умение внятно формулировать свои мысли не относится к главным достоинствам VsevolodV (впрочем как и к моим), но в данном случае все понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:41 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Каким образом второй получен из первого? SELECT cash.* вместо SELECT sum(cash.эквивалент1) as a И откуда известно, что второй правильный? Просто я посмотрел, что происходит со строками при таком джойне и условии where. Он неправильный - в нем ровно в два раза больше строк, чем должно быть,т.е. Код: plaintext 1. 2. 3. 4. ID_OPER - порядковый номер операции Если в таблицу Calc добавить еще одну строку, удовлетворяющую условию, то запрос даст нам в три раза больше строк, т.е. будет Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:42 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
2 VsevolodV Скорее всего у тебя в какой то из таблиц есть дубликаты, или джойнишь неправильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:49 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
ID_OPER - ключевое поле Пробовал INNER JOIN, LEFT JOIN и RIGHT JOIN - результат не изменялся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 14:53 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Ну и где в твоих запросах используется ID_OPER ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 15:02 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Так его вроде и не нужно использовать - таблицы связываются по полю [Реф №] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 15:06 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Провел эксперимент: Новый МДБ. Создал в нем две таблици Calc и Cash: Calc: Код: plaintext 1. 2. 3. Cash: Код: plaintext 1. 2. Запрос: Код: plaintext 1. 2. Результат запроса: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 15:25 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Vsevolod,читай мой пост от 14:49 У тебя 3 строкам из Calc соответствуют 2 строки из Cash.В результате соединения ты получишь (и получаешь) 6 строк результирующего набора. И объясни мне, зачем хранить в таблицах дубликаты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2003, 15:49 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Что значит дубликат? Если имеется ввиду, что одна запись записана два раза, то такого нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2003, 18:00 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Помогите разобраться. По-моему, сам запрос "в корне" составлен неправильно. Нужно вот что: Если в строках с определенным [Реф №] таблицы Calc есть хотя бы одна строка, в которой статус = "Получено", то по этому [Реф №] нужно посчитать sum(cash.эквивалент1) из таблицы Cash соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2003, 19:16 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Вот так по-моему будет правильнее: Код: plaintext 1. 2. Но тут проблема в том, что почему то этот запрос выполняется втечение 30 секунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2003, 19:28 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Вот так работает быстро: Код: plaintext 1. 2. Но если этот запрос вставить в основной запрос, то работа очень сильно замедляется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Что тут можно предпринять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2003, 19:58 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
В зависимости от условия WHERE запрос может выполняться 5 минут и более :( Должны же быть какие-нибудь пути оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:05 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
В итоге я прихожу к выводу, что и этот запрос не работает :( Допустим в таком варианте поле "Получено_пост" всегда равняется 0 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Я уже вообще ничего не понимаю :( Почему не работает??? Что делать??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:26 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
автор писал:between #14/09/2003# and #20/09/2003# В селектах даты пишутся по MMDDYYYY! Этому посвящена половина форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:29 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Ой! Забыл :) Но это не влияет на расчет вышеуказанного поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 16:39 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:05 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Работает быстро, но поле Получено_пост = NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:16 |
|
||
|
Дублирование данных в запросе
|
|||
|---|---|---|---|
|
#18+
Предыдущего поста НЕ БЫЛО :) Я забыл t.[реф №]. --- работает долго! ОЧЕНЬ ДОЛГО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2003, 17:17 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32332142&tid=1677941]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 555ms |

| 0 / 0 |
