Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

sql   Найти похожие ветки 

 
gestern   (2003-12-09 21:26) [0]

Что-то не то с запросом. Есть 2 таблицы DIREKTOR и FOTO. Поля у них одинаковые. Мне нужно вытащить из них данные. Вот скрипт:
SELECT * from DIREKTOR , FOTO where(DIREKTOR.DOK="""+combobox3.Text+""")and(FOTO.DOK="""+combobox3.Text+""")";
А он мне пустое множесто в ответ. Подскажите где ошибся?


 
Zacho ©   (2003-12-09 22:04) [1]

Во первых, в запросах к нескольким таблицам всегда явно указывай алиасы таблиц, не совпадающие с именами таблиц, т.е. что-то типа SELECT ... from DIREKTOR D , FOTO F where(D.DOK="""+combobox3.Text+""")and(F.DOK="""+combobox3.Text+""")";
Во-вторых, перед выполнением запроса (Open или что там у тебя) c помощью, например, ShowMessage посмотри получившийся текст запроса и если после этого вопрос не решится - приведи его здесь. А то нам же не видно, что у тебя в combobox3.Text :-)


 
me   (2003-12-09 22:04) [2]

SELECT * from DIREKTOR where DOK="""+combobox3.Text+"""
union
SELECT * from FOTO where DOK="""+combobox3.Text+"""


 
Zacho ©   (2003-12-09 22:25) [3]


> me (09.12.03 22:04) [2]

А это уже совсем другой запрос. UNION и INNER JOIN (пусть даже не явный, как у автора вопроса) - все-таки совершенно разные вещи. Впрочем, возможно автору требовался именно UNION, но так это или нет - знает только он :)


 
gestern   (2003-12-09 22:38) [4]


> SELECT * from DIREKTOR where DOK="""+combobox3.Text+"""
> union
> SELECT * from FOTO where DOK="""+combobox3.Text+"""

Пишет Data type unknown


 
Zacho ©   (2003-12-09 22:43) [5]


> gestern (09.12.03 22:38) [4]

Все-же, что именно надо, UNION или JOIN ? Если JOIN, то см. [1]
Телепатов нет, приводи более подробную информацию.


 
gestern   (2003-12-09 23:07) [6]

Надо из 11 таблиц с одинаковыми названиями полей вытащить данные по текстовому полю DOK, с текстом из комбобокса. Подскажите как это проще сделать?


 
gestern   (2003-12-09 23:10) [7]

procedure TForm1.ComboBox3Change(Sender: TObject);
var
sql:string;
begin
sql:="SELECT * from DIREKTOR D, FOTO F where (D.DOK="""+combobox3.Text+""")or(F.DOK="""+combobox3.Text+""")";
IBDataset14.Close;
IBDataset14.SelectSQL.Clear;
IBDataset14.SelectSQL.Add(sql);
IBDataset14.Open;
IBDataset14.First;
end;
Так работает только вместо 2 записей(их пока в таблице только 2)выдеёт 2*n записей, где n формируется не знамо как?


 
Zacho ©   (2003-12-09 23:19) [8]

Все-таки пиши более вразумительно. Хотя бы приведи структуру таблиц, примерные данные в таблицах, и желаемый результат запроса. А то просто нифига не понятно, что есть и что надо получить.


 
Maniac   (2003-12-09 23:34) [9]

Добавь в Where (d.dok=f.dok)


 
gestern   (2003-12-10 00:01) [10]


> Все-таки пиши более вразумительно. Хотя бы приведи структуру
> таблиц, примерные данные в таблицах, и желаемый результат
> запроса. А то просто нифига не понятно, что есть и что надо
> получить.

Медицинский центр. 11 таблиц для записи в 11 кабинетов.Поля везде одинаковые.
Поля: id-понятно
fam-фамилия(пациента)
nam-имя(пациента)
tel-тел(пациента)
proz-процедура
dok-фамилия доктора проводящего процедуру
appar-апарат с пом. которого проводят процедуру
vremya-время записи
choslo-дата записи
zena-стоимость процедуры
Нужно в конце дня узнать сколько заработал доктор, доктор может делать процедуры в разных кпбинетах. Т.е. надо запросить по 11 таблицам по полю dok фамилию доктора, а по полю chislo-сегодняшнюю дату и просуммировать данный из полей zena этих таблиц. Надеюсь удалось изложить лучше. Так как это всё-таки проще сделать?


 
Zacho ©   (2003-12-10 00:21) [11]

Проще - сделать две (а может и одну) таблицу вместо 11-ти. Читайте Дейта. И осознайте, чем "декомпозиция ограниченной выборкой" (Ваш вариант) хуже "декомпозиции проекцией" (общепринятый вариант декомпозиции).
А с такой архитектурой БД - imho, только ХП с 11-ю select-ами и суммированием суммы (во тавтология !) между ними.
Или то же самое на клиенте.



Страницы: 1 вся ветка

Текущий архив: 2004.01.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
1-11987
AleKo
2003-12-19 07:24
2004.01.05
Добавить ресурс


1-11872
ruslan_as
2003-12-15 11:51
2004.01.05
Помогите посчитать часы


14-12146
Alexander Vasjuk
2003-12-10 13:42
2004.01.05
HTML вертикальный текст


1-11912
DNS
2003-12-21 16:22
2004.01.05
ClicksDisabled


3-11802
_san_
2003-12-08 18:09
2004.01.05
не работает BDE под XP