Помогите с запросом (+)

Bor-ka

Новичок
Помогите с запросом (+)

Есть 3 таблицы:

таблица1 - auto

auto_id | auto_name
-------------------
1 | a
2 | b
3 | c
4 | d
5 | e


таблица2 - property

property_id | property_name
---------------------------
6 | марка
7 | цвет
8 | производитель

таблица3 - auto_property

auto_property_id | auto_id | property_id |auto_property_value
-------------------------------------------------------------
1 | 1 | 6 | Honda
2 | 1 | 7 | black
3 | 2 | 6 | Toyota
4 | 2 | 7 | Red
5 | 2 | 8 | Japan
6 | 3 | 6 | Niva
7 | 3 | 7 | White

Как получить те записи таблицы auto, для которых не задано значение свойства из
таблицы property одновременно с теми записями таблицы auto, для
которых задано значение данного свойства из таблицы property. Например
для свойства с id=8 (производитель) необходимо получить

auto_id | property_id | auto_property_value
-------------------------------------------
1 | 8 | Japan
2 | 8 | -
3 | 8 | -

Заранее благодарен за помощь.
 

Andreika

"PHP for nubies" reader
[sql]SELECT a.auto_id, p.property_id, p.auto_property_value FROM auto a LEFT JOIN auto_property p ON (a.auto_id=p.auto_id AND p.propery_id=8)[/sql]

не проверял... + это если в "надо получить" строка 1 и 2 перепутаны, иначе смысл непонятен (
 

zerkms

TDD infected
Команда форума
[sql]
SELECT * FROM `property` `t1` LEFT JOIN `auto_property` `t2` ON `t1`.`property_id` = `t2`.`property_id` WHERE `t1`.`property_id` = 8
[/sql]
 

Bor-ka

Новичок
Спасибо, уточнение по запросу:

Код:
Есть 3 таблицы:

таблица1 - auto

auto_id | auto_name
-------------------
   1    |    a
   2    |    b
   3    |    c
   4    |    d
   5    |    e


таблица2 - property

property_id | property_name
---------------------------
     6      | марка
     7      | цвет
     8      | производитель

таблица3 - auto_property

auto_property_id | auto_id | property_id |auto_property_value
-------------------------------------------------------------
     1           |    1    |      6      |   Honda
     2           |    1    |      7      |   black
     3           |    2    |      6      |   Toyota
     4           |    2    |      7      |   Red
     5           |    2    |      8      |   Japan
     6           |    3    |      6      |   Niva
     7           |    3    |      7      |   White
Как получить те записи таблицы auto, для которых не задано значение свойства из таблицы property (!) одновременно с теми записями таблицы auto, для которых задано значение данного свойства из таблицы property! с возможностью задавать ограничения по значениям любых столбцов этих таблиц. Например для свойства с id=8 (производитель) необходимо получить

Код:
auto_id | property_id | auto_property_value
-------------------------------------------
   1    |      8      |      Japan
   2    |      8      |        -
   3    |      8      |        -
А, например, для свойства с id=8 (производитель) и auto_property_value = black или White необходимо получить

Код:
auto_id | property_id | auto_property_value
-------------------------------------------
   1    |      8      |      Japan
   3    |      8      |        -
 
Сверху