Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сопоставить имена из одной таблицы id-шникам из другой таблицы
 
 автор: Zdraff   (13.09.2009 в 16:00)   письмо автору
 
 

Здравствуйте. При показе объявлений мне нужно вывести производителя товара, модель товара и прочие поля из объявления, если возможно, не используя для этого несколько запросов.

Таблица ОБЪЯВЛЕНИЯ (a):
id | prod_id | model_id | price | author_id | description

Тaблица ПРОИЗВОДИТЕЛИ_ТОВАРА (b):
id | prod_name

Таблица МОДЕЛИ_ТОВАРА (c):
id | model_name | model_info

Т.е. я знаю, как извлечь все из таблицы "a", потом, используя WHERE, вытащить нужных производителя товара и модель товара. Но это куча запросов получается. Можно ли как-то одним запросом все извлечь, чтоб потом, используя цикл while построить таблицу со всеми объявлениями?

  Ответить  
 
 автор: cheops   (13.09.2009 в 16:05)   письмо автору
 
   для: 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

  Ответить  
 
 автор: Zdraff   (13.09.2009 в 16:30)   письмо автору
 
   для: cheops   (13.09.2009 в 16:05)
 

Спасибо огромное, то, что надо.
P.S. С днем программиста!

  Ответить  
 
 автор: serjinio   (13.09.2009 в 19:10)   письмо автору
 
   для: cheops   (13.09.2009 в 16:05)
 

а конструкция FROM a, b, c корректна ,или лучше использовать JOIN

  Ответить  
 
 автор: cheops   (13.09.2009 в 19:12)   письмо автору
 
   для: serjinio   (13.09.2009 в 19:10)
 

Корректна, если, конечно, база данных целостная и каждому из полей prod_id и model_id соответствует запись в таблицах b и с. В противном случае необходимо использовать LEFT JOIN.

  Ответить  
 
 автор: Trianon   (13.09.2009 в 19:48)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования