![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.12.2010
Сообщений: 4
|
![]()
здравствуйте у меня такая проблема: я пишу запрос:
SELECT pers_name AS "ФИО", address AS "Адрес", phone AS "Телефон", name_prof AS "Должность", dep_id AS "Отделение" FROM personal p, personal p1, personal p2, prof, departments WHERE p.pers_id = prof.prof_id AND p1.dept = departments.dep_id на что вылазит ошибка: Column 'pers_name' in field list is ambiguous что мне делать? |
![]() |
![]() |
![]() |
#2 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]()
скажите, пожалуйста, для чего вы три раза обращаетесь к таблице "Персонал"?
FROM personal p, personal p1, personal p2 Он говорит вам, что в блоке FROM есть несколько таблиц с одинаковым названием поля, а именно pers_name, и он не знает, из какой именно таблицы вам нужен этот pers_name. Запрос ваш построен некорректно. Вот как-то так: Код:
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ACE Valery, согласен... но чтобы предлагать вариант решения, нужно знать исходное задание...
иногда нужно бывает и несколько раз одну и ту же таблицу задействовать в поле FROM... правда, нужно ли это здесь - не уверен.. Как и не уверен, что TC понимает, что он собственно написал... pipet 1) Вы должны в select'е указать, откуда брать pers_name (поле с такими именем есть не одной, а в нескольких из указанных во FROM таблиц а конкретно, очевидно, это поле есть в таблице p, p1 и p2 - из какой брать нужно указать например, select p.pers_name AS "ФИО", ....) 2) запрос имеет ещё как минимум одну КРИТИЧЕСКУЮ ошибку. Запомните на всегда - что ВСЕ указанные таблицы должны быть связаны с друг другом! таблица p2 с кем связана?! и между корежами данных p+prof и p1+departments тоже должна быть связь.. Обычно, если указано во FROM 5-ть таблиц, должно быть задано 4-ре условия связи таблиц.... p.s. А может Вам стоит почитать книжки по SQL?.. Того же Мартина Грубера "Понимание SQL"... Последний раз редактировалось Serge_Bliznykov; 12.12.2010 в 21:26. |
![]() |
![]() |
![]() |
#4 | |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
![]() Цитата:
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 11.12.2010
Сообщений: 4
|
![]()
у меня в таблице personal есть несколько полей и 3 из них мне надо вывести - pers_name, address и phone. и я так понимаю sql не поймет что мне надо вывести 3 из одной таблицы и по одному столбцу из других таблиц, поэтому использовал personal 3 раза
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 458
|
![]() Цитата:
Код:
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
![]() |
|
![]() |
![]() |
![]() |
#7 | ||||
Регистрация: 11.12.2010
Сообщений: 4
|
![]() Цитата:
Цитата:
Нужно из таблицы personal вывести столбцы pers_name, address и phone, из таблицы prof вывести столб name_prof, из таблицы departments вывести dep_name. Если на каждый столб из одной таблицы указывать имя таблици то он начинает ругатся на неверные алиасы, если я добавляю алиасы то он начинает ругатся на отсутствие столбца. Цитата:
Цитата:
а еще если не секрет вот у мне код делфи: Код:
как быть? Последний раз редактировалось Stilet; 13.12.2010 в 10:12. |
||||
![]() |
![]() |
![]() |
#8 | |
Форумчанин
Регистрация: 23.11.2010
Сообщений: 458
|
![]() Цитата:
![]()
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
![]() |
|
![]() |
![]() |
![]() |
#9 |
Регистрация: 11.12.2010
Сообщений: 4
|
![]()
вот следующая беда:
надо чтобы поле сравнивалось с текстом и выводились поля содержащие этот текст вот код: Код:
Последний раз редактировалось pipet; 13.12.2010 в 01:54. |
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
какая у Вас СУБД ? 2) если с кавычками порядок, значит, у Вас в базе нет записей, где pers_name равно значению "Коперник" ! Почему, Вы такую запись видете, а она не выбирается - это отдельных разговор, тут может быть много вариантов: например, там в начале или конце строки есть пробелы (некоторые СУБД к этому относятся очень щепетильно), либо в таблице написано КОПЕРНИК, либо какая-то из букв имени - латинская (K, o, p, k ) ? |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) | Schutze | Помощь студентам | 6 | 29.11.2009 22:15 |
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi | S_Yevgeniy | Помощь студентам | 1 | 27.10.2009 06:26 |
sql или не sql | Diamand | SQL, базы данных | 9 | 18.09.2008 17:17 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |