LINUX.ORG.RU

простенький вопрос по sql


0

0

есть три таблицы:
mysql> select id,name from parfums where id=401;
+-----+----------+
| id  | name     |
+-----+----------+
| 401 | Creation |
+-----+----------+
1 row in set (0.00 sec)

mysql> select * from prices where gid=401;
+-----+-----+--------+
| id  | gid | price  |
+-----+-----+--------+
| 222 | 401 | 890.00 |
| 223 | 401 | 780.00 |
| 224 | 401 | 560.00 |
+-----+-----+--------+
3 rows in set (0.00 sec)

mysql> select * from capacities where gid=401;
+-----+-----+----------+
| id  | gid | capacity |
+-----+-----+----------+
| 222 | 401 |      100 |
| 223 | 401 |       50 |
| 224 | 401 |       30 |
+-----+-----+----------+
3 rows in set (0.00 sec)

mysql>                                        

нужно получить после запроса id,name,prices,capacities,

mysql> select distinct parfums.name,price,capacity from parfums,prices,capacities where parfums.id=prices.gid and parfums.id=capacities.gid and parfums.id=401 and capacities.gid=prices.gid;
+----------+--------+----------+
| name     | price  | capacity |
+----------+--------+----------+
| Creation | 890.00 |      100 |
| Creation | 890.00 |       50 |
| Creation | 890.00 |       30 |
| Creation | 780.00 |      100 |
| Creation | 780.00 |       50 |
| Creation | 780.00 |       30 |
| Creation | 560.00 |      100 |
| Creation | 560.00 |       50 |
| Creation | 560.00 |       30 |
+----------+--------+----------+
9 rows in set (0.00 sec)


как получить 3 строчки вместо 9 ?

или ткините носом что именно читать (stright_join, union ??)

зарание спасибо
anonymous

Ответ на: комментарий от xtron

да так а работает но интересует случай если capacities.id может не совпадать с prices.id ? разтолкуйте плз )

anonymous
()
Ответ на: комментарий от anonymous

Тогда это ты растолкуй, что реализуешь, какие варианты возможны и что именно ты пытаешься тащить своим запросом.

anonymous
()
Ответ на: комментарий от anonymous

есть база парфюмов, у каждого парфюма может быть разный литраж - от 100 гр до литра =)

след цена тоже разная, в завасимости от объема
сейчас все находиться в одной базе

те если у парфюма три разных литража - вбивают трижды в базу

хочу разбить это дело на 3 таблицы
одна главное - содержит имя описание фото и тп
две другие - сожержат цены и объем

в уме нарисовал себе такую табличку

                    -------------
                   { main_ table }
                    -------------
                  /              \
             + ------ +        +----------+
             | prices |        |capacities|
             + ------ +        +----------+

описаный веше вариант верен и работает, но для сноровки\саморазвития 
хотел узнать про случай когда prices.id != capacities.id

anonymous
()
Ответ на: комментарий от anonymous

>Тогда это ты растолкуй, что реализуешь, какие варианты возможны и что именно ты пытаешься тащить своим запросом.

запросом хочу вытащит:
название парфюма + весь его литраж + все цены , зная parfums.id

anonymous
()
Ответ на: комментарий от anonymous

кажетьс вопросы отпали
тут ошибка в соотвествии
связь должна быть вот такой:


                  -------------
                   { main_ table }
                    -------------
                  /              \
             + ------ +        +----------+
             | prices |--------|capacities|
             + ------ +        +----------+


anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.