Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизЗапрос SQL Найти похожие ветки
← →
*Ray* © (2006-09-04 15:22) [0]Доброе время суток, уважаемые Мастера!
У меня возникла проблема при составлении SQL-запроса. Имеется таблица People, которая содержит поля: ID, Name. Это таблица справочная. Также есть другая таблица Main, основная . В ней содержатся различные данные, в том числе о выполненных работах, конкретными людьми по конкретным датам. Например: там можно узнать допустим кто сходил в магазин, кто вымыл полы, кто приготовил ужин 1 сентября(утрирую). В Main не содержатся имена людей, а содержатся их ID из таблицы People. Я хочу отобразить в DBGride не ID людей, а их имена используя SQL-запрос компонента Query. Выцепить имя человека по одному роду деятельности я могу, а вот сразу по трем работам...
Select People.Surname
From Main, People
Where (Main.Kto_Uzhin=People.ID)
Буду очень благодарен! Заранее большое спасибо за помощь!
← →
ANB © (2006-09-04 15:33) [1]Select Main.*, People.Surname
From Main, People
Where (Main.Kto_Uzhin=People.ID)
Этот запрос и так всех дернет.
← →
Anatoly Podgoretsky © (2006-09-04 15:33) [2]Для выборки по другому виду используй JOIN
← →
Anatoly Podgoretsky © (2006-09-04 15:34) [3]ANB © (04.09.06 15:33) [1]
Не дернет, у него три разных поля КТО - ну такая нормализация
← →
ANB © (2006-09-04 15:35) [4]
> Anatoly Podgoretsky © (04.09.06 15:33) [2]
А разве у него не джойн ? (неявный)
← →
Anatoly Podgoretsky © (2006-09-04 15:35) [5]И еще такая метода задания вопроса, что бы ты помучался
← →
Anatoly Podgoretsky © (2006-09-04 15:36) [6]ANB © (04.09.06 15:35) [4]
У него JOIN но мало условий связи и мало полей вывода
← →
ANB © (2006-09-04 15:41) [7]
> Anatoly Podgoretsky © (04.09.06 15:36) [6]
Дошло.
Автору неплохо бы перед написанием запроса изменить структуру таблиц.
← →
Desdechado © (2006-09-04 15:43) [8]Одну и ту же таблицу можно соединять в запросе несколько раз с разными алиасами.
← →
Anatoly Podgoretsky © (2006-09-04 16:18) [9]ANB © (04.09.06 15:35) [4]
По задаче требуется LEFT OUTER JOIN, а неявный это INNER JOIN
← →
*Ray* © (2006-09-04 16:41) [10]
> Desdechado © (04.09.06 15:43) [8]
> Одну и ту же таблицу можно соединять в запросе несколько
> раз с разными алиасами.
А не подскажете как создать алиас таблицы?
← →
Desdechado © (2006-09-04 16:48) [11]Select P1.Surname, P2.Surname
From Main M, People P1, People P2
Where M.Kto_Uzhin=P1.ID AND M.Kto_Zavtrak=P2.ID
алиасы выделены
← →
parovoZZ © (2006-09-04 16:53) [12]Я бы сделал три таблицы
1. Имена
2. Род работ
3. Кто и когда что сделал.
← →
Anatoly Podgoretsky © (2006-09-04 16:56) [13]Desdechado © (04.09.06 16:48) [11]
И не дай бог, что бы одно из значений не оказалось NULL, тут в книги нужно, Дельфи тут не пахнет.
← →
Desdechado © (2006-09-04 17:14) [14]Anatoly Podgoretsky © (04.09.06 16:56) [13]
Это уже другая, глобальная, проблема.
Тогда OUTER JOIN поможет.
А вообще согласен - читать-непережи(у)вать: теорию построения БД, правила нормализации, SQL вообще и SQL в приложении к своему серверу.
← →
*Ray* © (2006-09-04 17:22) [15]
> Desdechado © (04.09.06 16:48) [11]
> Select P1.Surname, P2.Surname
> From Main M, People P1, People P2
> Where M.Kto_Uzhin=P1.ID AND M.Kto_Zavtrak=P2.ID
>
> алиасы выделены
Desdechado, спасибо все работает, но Anatoly Podgoretsky тоже прав, а если допустить что одно из значений принимает NULL то строка выпадает, а этого быть не должно.
Как быть в этой ситуации?
Структура Main:
Data - дата исполнения
Kto_Uzhin - ID человека из таблицы People
Kto_magazin - ID человека из таблицы People
Kto_Pol - ID человека из таблицы People
Primechanie - примечание
Структура People:
ID - ID человека
Name - имя человека
Нужно чтобы в DBGride вместо кодов человека, отображалось имя человека путем задания SQL - запроса.
← →
*Ray* © (2006-09-04 17:24) [16]
> Это уже другая, глобальная, проблема.
> Тогда OUTER JOIN поможет.
не могли бы Вы привести код запроса согласно структуре котрую я привел используя OUTER JOIN.
← →
Рустем © (2006-09-04 17:30) [17]
> *Ray* ©
А ты не хочешь прислушаться к совету parovoZZ © [12]?
По моему, твоя структура не совсем удачная...
← →
Desdechado © (2006-09-04 17:48) [18]> *Ray* © (04.09.06 17:24) [16]
процитирую себя:
> SQL вообще и SQL в приложении к своему серверу.
А вообще по структуре процитирую себя же еще раз:
> теорию построения БД, правила нормализации
Понадобится, кто цветы поливал или пыль вытирал, с собакой гулял или посуду мыл, так и будешь вправо таблицу расширять?
← →
*Ray* © (2006-09-04 20:18) [19]Большое всем спасибо за Ваши ответы! Я прислушался к Вашим советам, они очень помогли!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.04 c