Is there anyone who could help me with this "simple" query.

Did i ask anything in a wrong way because I still got no answers to my 
request?


SELECT at.name, av.value, at.unit, at.id, a.product_id
FROM  attribute_type at
LEFT OUTER JOIN  attribute a on (at.id = a.type_id)
LEFT OUTER JOIN  attribute_value av on (av.id = a.value_id)
WHERE (a.product_id = 21 OR a.product_id IS Not NULL OR a.value_ID IS 
Not NULL OR a.type_ID IS Not NULL)

and the result:

| name     | value | unit | id | product_id |
| height   | 10    | cm   |  1 |         21 |
| width    | 20    | cm   |  2 |         32 |
| width    | 30    | cm   |  2 |         40 |
| diameter | 222   | cm   |  3 |         21 |
Number of Results: 4

I only want to have attributes for one product_id (e.g. 21). However, 
every attributetype available has to be in the result and any 
corresponding value or NULL.

So my preferred result should look like that:

| name     | value | unit | id | product_id |
| height   | 10    | cm   |  1 |         21 |
| width    |  NULL    | cm   |  2 |  NULL         |           because 
width is for this product still empty but should be available to fill 
with a value
| diameter | 222   | cm   |  3 |         21 |
Number of Results: 3

Any chance to achieve this?


I have 3 tables to describe attributes for a product database.

e.g.
attribute_type:
    +----+----------+------+
    | id | name     | unit |
    +----+----------+------+
    |  1 | height   | cm   |
    |  2 | width    | cm   |
    |  3 | diameter | cm   |
    +----+----------+------+

attribute_value:
    +----+----------+
    | id | value    |
    +----+----------+
    |  1 | 10       |
    |  2 | 20       |
    |  3 | 30       |
    |  4 | 222      |
    +----+----------+

attribute:
    +----+----------+----------+------------+
    | id | type_id  | value_id | product_id |
    +----+----------+----------+------------+
    |  1 | 1        | 1        |   21       |
    |  2 | 2        | 2        |   32       |
    |  3 | 2        | 3        |   40       |
    |  4 | 3        | 4        |   21       |
    +----+----------+----------+------------+

In a web form where I edit the product, there is also an attribute
section where I would like to give certain attributes values specific
for the product. The problem is when I associate values to attributes in
one product, the same attribute in other products is hidden (not in the
result of the query). Therefore I would like to list all attribute_types
for each product regardless if there are values assigned or not.

I used the following query and I think there must be something wrong:

SELECT         at.name, av.value, at.unit,  at.id, a.product_id
FROM            attribute_type at
LEFT OUTER JOIN     attribute a on (at.id = a.type_id)
LEFT OUTER JOIN     attribute_value av on (av.id = a.value_id)
WHERE         (a.product_id = 21 OR a.product_id IS NULL OR a.value_ID
IS NULL OR a.type_ID IS NULL)

regards,
   Andreas


-----------------------------------------
Andreas Habereder
private: [EMAIL PROTECTED]
mobile: +49 172 838 7771
-----------------------------------------


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to