Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Запрос на выборку


Автор: Dimyan 20.1.2005, 15:29
Помогите пожалуйста составить запрос на выборку, совсем запарился smile

Задача такова
Есть таблица CUSTOMERS (с клиентами) и есть таблица ORDERS
в таблице ORDERS среди прочих есть поля CITY_ID (ID города), SENDER_ID (ID отправителя связанный с полем ID таблицы CUSTOMERS), RECEIVR_ID (ID получателя так же связанный с полем ID таблицы CUSTOMERS)
в таблице CUSTOMERS поля ID (счетчик, ключ) и CUSTOMERS_NAME (имя клиента)
Получатели и Отправители хранятся в одной таблице потому что отправитель может быть получателем и наоборот.
Нужен запрос который бы при указании CITY_ID отображал имена SENDER_ID и RECEIVR_ID из таблицы CUSTOMERS

Автор: Rakhim 20.1.2005, 15:52
Примерно так

Код

SELECT ORDERS.CITY_ID, ORDERS.SENDER_ID, ORDERS.RECEIVR_ID, CUSTOMERS.CUSTOMERS_NAME AS S_NAME, CUSTOMERS_R.CUSTOMERS_NAME AS R_NAME
FROM CUSTOMERS CUSTOMERS_R
  INNER JOIN ORDERS ON (CUSTOMERS_R.ID = ORDERS.RECEIVR_ID)
  INNER JOIN CUSTOMERS ON (ORDERS.SENDER_ID = CUSTOMERS.ID)
WHERE ORDERS.CITY_ID=1

Автор: Alex 21.1.2005, 07:35
Скорее так:
Код

SELECT ORDERS.CITY_ID, ORDERS.SENDER_ID, ORDERS.RECEIVR_ID, CUSTOMERS.CUSTOMERS_NAME AS S_NAME, CUSTOMERS_R.CUSTOMERS_NAME AS R_NAME
FROM CUSTOMERS CUSTOMERS_R
 LEFT JOIN ORDERS ON (CUSTOMERS_R.ID = ORDERS.RECEIVR_ID)
 LEFT JOIN CUSTOMERS ON (ORDERS.SENDER_ID = CUSTOMERS.ID)
WHERE ORDERS.CITY_ID=1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)