Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.016 c