|
|
|
| Здравствуйте. При показе объявлений мне нужно вывести производителя товара, модель товара и прочие поля из объявления, если возможно, не используя для этого несколько запросов.
Таблица ОБЪЯВЛЕНИЯ (a):
id | prod_id | model_id | price | author_id | description
Тaблица ПРОИЗВОДИТЕЛИ_ТОВАРА (b):
id | prod_name
Таблица МОДЕЛИ_ТОВАРА (c):
id | model_name | model_info
Т.е. я знаю, как извлечь все из таблицы "a", потом, используя WHERE, вытащить нужных производителя товара и модель товара. Но это куча запросов получается. Можно ли как-то одним запросом все извлечь, чтоб потом, используя цикл while построить таблицу со всеми объявлениями? | |
|
|
|
|
|
|
|
для: Zdraff
(13.09.2009 в 16:00)
| | Можно отталкиваться от следующего запроса
SELECT
a.id AS id,
a.price AS price,
a.author_id AS author_id,
a.description AS description,
b.prod_name AS prod_name,
c.model_name AS model_name,
c.model_info AS model_info
FROM a, b, c
WHERE a.prod_id = b.id AND a.model_id = c.id
GROUP BY a.id
|
| |
|
|
|
|
|
|
|
для: cheops
(13.09.2009 в 16:05)
| | Спасибо огромное, то, что надо.
P.S. С днем программиста! | |
|
|
|
|
|
|
|
для: cheops
(13.09.2009 в 16:05)
| | а конструкция FROM a, b, c корректна ,или лучше использовать JOIN | |
|
|
|
|
|
|
|
для: serjinio
(13.09.2009 в 19:10)
| | Корректна, если, конечно, база данных целостная и каждому из полей prod_id и model_id соответствует запись в таблицах b и с. В противном случае необходимо использовать LEFT JOIN. | |
|
|
|
|
|
|
|
для: serjinio
(13.09.2009 в 19:10)
| | Сравнивайте:
SELECT
a.id, a.price, a.description,
p.prod_name,
m.model_name, m.model_info
FROM advs a
LEFT JOIN prods p ON p.id = a.prod_id
LEFT JOIN models m ON m.id = a.model_id
|
| |
|
|
|