| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > Вопрос по SQL |
| Автор: Матроскин 10.7.2004, 06:21 |
| Уважаемые коллеги! В результате выполнения нижеприведённого запроса у меня выходит две одинаковые строчки. На складе же у меня хранится только один элемент "жесткий диск...". В чём может быть проблема? Запрос: SELECT element.name_full, producer.name, element.step_date, sourcer.name,warehouse.name FROM element, producer,sourcer,warehouse, delivery,be,composition,produce WHERE (element.elm_id=delivery.sourcer_id) AND (delivery.sourcer_id=sourcer.sourcer_id) AND (element.elm_id=be.elm_id) AND (be.wh_id=warehouse.wh_id) AND (element.elm_id=composition.elm_id) AND (composition.complete_id=0) AND (element.elm_id=produce.elm_id) AND (producer.prod_id=produce.prod_id) Результат запроса Жёсткий диск 20 гб, 7200 об. Samsung 1999-03-01 00:00:00.000 ДНС Товар.склад.группа Жёсткий диск 20 гб, 7200 об. Samsung 1999-03-01 00:00:00.000 ДНС Товар.склад.группа Lazerjet 400C Epson 2003-02-15 00:00:00.000 Бит Технический склад |
| Автор: Secandr 10.7.2004, 07:39 |
| а если добавить GROUP BY (идинтификатор записи в которой храниться название товара) |
| Автор: <Spawn> 10.7.2004, 09:17 |
| Матроскин Во первых, зачем ты включаешь в запрос таблицы, которые тут не нужны просто? Ты же выбираешь данные из element, producer, element, sourcer,warehouse. Или у тебя другие таблицы являются связывающими? Во вторых дубляж можешь обойти либо DISTINCT-ом, либо GROUP BY - ем, либо EXIST-ом(все зависит от конкретного случая), но DISTINCT это не есть хорошо, так как с ним все записи тянутся к клиенту и потом только происходит обрезание дубляжей. Если бы показал значение строк таблицы для этого диска, то может и причина стала бы ясна |
| Автор: Матроскин 12.7.2004, 15:11 | ||
Group by ПОМОГ. Спасибо |