|
|
|
| Есть таблица №1
Поле ID тип INT
Поле KOLICHESTVO тип VARCHAR
таблица №2
Поле IDPRICE тип INT
Поле IDRABOTA тип INT
таблица №3
Поле ID3 тип INT
Как выбрать все записи с количеством поле KOLICHESTVO не равным пустому также выбрать из таблицы 2 ID=IDPRICE и дальше выбрать в таблице 3 IDRABOTA=ID3
Т.е. получается нужно выбрать в табилце 1 записи с количеством не равным пустому, на основе этого результата выбрать из таблицы 2 и на основе результата выбора из таблицы 2 нужно выбрать данные в таблице 3.
Т.е. связь полей таблиц такая ID -->IDPRICE, IDRABOTA-->ID3 | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(02.11.2009 в 11:05)
| | А хотя бы первый шаг Вы можете записать в виде запроса? | |
|
|
|
|
|
|
|
для: Trianon
(02.11.2009 в 14:11)
| | С удовольствием!
SELECT p.nazvanie, p.kolichestvo, s.idprice, f.id3
FROM tabl1 AS p
LEFT JOIN tabl2 AS s ON s.idprice = p.id
LEFT JOIN tabl3 AS f ON f.id3 = s.idrabota WHERE kolichestvo <> ''
|
Вот так я предполагал построить запрос, но по результатам запроса, происходит склеивание первой и второй таблиц правильно, а из третьей таблицы как-то странно выбирается. Скорее сказать из третьей таблицы не верно выбирается. Вот я и хочу, чтобы после селект по третьей таблице все-таки правильно сработал. А как это сделать не соображу.
Видел как-то делают select в select-е но это уж пока за гранью моего понимания - как это работает. | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(02.11.2009 в 14:27)
| | Все правильно написано.
Только лучше бы Вы перенесли запрос на несколько строк - так его и читать невозможно, и на реплику ответить не нормально получается.
"как-то странно выбирается" не говорит ни о чем. | |
|
|
|
|
|
|
|
для: Trianon
(02.11.2009 в 14:30)
| | Блин, а как теперь его перенести? Правка больше после вашего ответа не доступна. | |
|
|
|
|
|
|
|
|
для: Trianon
(02.11.2009 в 14:33)
| | Готово!! | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(02.11.2009 в 14:37)
| | Чтобы еще более понятно было, я разложу запрос на подзадачи, которые должны были выпониться одним селектом.
SELECT p.nazvanie, p.kolichestvo, s.idprice, s.idrabota
FROM tabl1 AS p
LEFT JOIN tabl2 AS s ON s.idprice = p.id WHERE p.kolichestvo <> ''
|
и на основе этой получившейся таблицы сделать нижеследуещее
SELECT p.nazvanie, p.kolichestvo, p.idprice, p.idrabota FROM tabl1 AS p
LEFT JOIN tabl3 AS f ON f.id3 = p.idrabota WHERE p.kolichestvo <> ''
|
В результате получится нужная мне выборка | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(02.11.2009 в 14:40)
| | Запрос (02.11.2009 в 14:27) делает именно то, что Вы хотите. | |
|
|
|