Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2009, 14:26   #1
wadzik
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 23
По умолчанию вопрос по SQL

Есть код SQL запроса

SELECT
SmetaSource.*, NSB_Books.ZvenoID, NSB_Books.UnitOfMeasuring, NSB_Books.TZ, NSB_Books.TechOtchet

FROM
SmetaSource, NSB_Books

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ') AND (NSB_Books.NormaNumber=SmetaSource. NormaNumber)



В него надо дооавть выбор из еще такой же таблицы как и NSB_Books с такими же полями, которая называется NSB_Books_a.

Я попробовал вот так :


SELECT
SmetaSource.*, NSB_Books.ZvenoID, NSB_Books.UnitOfMeasuring, NSB_Books.TZ, NSB_Books.TechOtchet, NSB_Books_a.ZvenoID, NSB_Books_a.UnitOfMeasuring, NSB_Books_a.TZ, NSB_Books_a.TechOtchet

FROM
SmetaSource, NSB_Books, NSB_Books_a

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ') AND (NSB_Books.NormaNumber=SmetaSource. NormaNumber) AND
(NSB_Books_a.NormaNumber=SmetaSourc e.NormaNumber)



SQL.Add() - вроде бы выполняется, но вот похоже ничего этим запросом не выбираеся, т.е. в цикл while not Eof do после выполнения SQL запроса программа не заходит.


Подскажите может я ошибся где-то с составлением SQL запроса.

Спасибо.
wadzik вне форума Ответить с цитированием
Старый 18.08.2009, 18:58   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

скорее всего у тя ни одна запись не соответствует заданому условию
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.08.2009, 10:07   #3
wadzik
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 23
По умолчанию

нет этот код работает

SELECT
SmetaSource.*, NSB_Books.ZvenoID, NSB_Books.UnitOfMeasuring, NSB_Books.TZ, NSB_Books.TechOtchet

FROM
SmetaSource, NSB_Books

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ') AND (NSB_Books.NormaNumber=SmetaSource. NormaNumber)
wadzik вне форума Ответить с цитированием
Старый 19.08.2009, 11:12   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

При таком способе в выходной набор попадут только те NormaNumber, которые есть во всех трех таблицах, а таких, видимо, нет.
Можно попробовать так:
Код:
SELECT
SmetaSource.*, 
NSB_Books.ZvenoID, NSB_Books.UnitOfMeasuring, NSB_Books.TZ, NSB_Books.TechOtchet, 
NSB_Books_a.ZvenoID, NSB_Books_a.UnitOfMeasuring, NSB_Books_a.TZ, NSB_Books_a.TechOtchet

FROM
SmetaSource
LEFT JOIN NSB_Books ON (NSB_Books.NormaNumber=SmetaSource. NormaNumber)
LEFT JOIN NSB_Books_a ON (NSB_Books_a.NormaNumber=SmetaSource.NormaNumber)

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ')
Но сразу возникает вопрос: а оно тебе надо, выбирать из одинаковых таблиц в разные столбцы? Может проще соединить два запроса через UNION ?
Код:
SELECT
SmetaSource.*, NSB_Books.ZvenoID, NSB_Books.UnitOfMeasuring, NSB_Books.TZ, NSB_Books.TechOtchet

FROM
SmetaSource, NSB_Books

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ') AND (NSB_Books.NormaNumber=SmetaSource. NormaNumber) 

UNION

SELECT
SmetaSource.*, NSB_Books_a.ZvenoID, NSB_Books_a.UnitOfMeasuring, NSB_Books_a.TZ, NSB_Books_a.TechOtchet

FROM
SmetaSource, NSB_Books_a

WHERE
(SmetaSource.SmetaID=' + IntToStr(KeyID) + ') AND (NSB_Books_a.NormaNumber=SmetaSource. NormaNumber)

Последний раз редактировалось Black Fregat; 19.08.2009 в 11:14.
Black Fregat вне форума Ответить с цитированием
Старый 19.08.2009, 12:03   #5
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

и желательно через UNION ALL
soleil@mmc вне форума Ответить с цитированием
Старый 19.08.2009, 12:47   #6
wadzik
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 23
По умолчанию

Спасибо UNION помог
wadzik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли так составить SQL вопрос? Mixasik SQL, базы данных 25 15.07.2009 20:15
Вопрос по SQL ]Wowan[ БД в Delphi 0 18.03.2009 10:49
вопрос по SQL запросу Anton_S БД в Delphi 5 09.06.2008 01:47
Вопрос по SQL Taras БД в Delphi 9 16.01.2008 12:45
Еще один вопрос с SQL-ом фЁдОр БД в Delphi 27 22.10.2007 12:42