join по 3 таблицам

zip111

Новичок
join по 3 таблицам

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

catalogue

id (int) | category (varchar)

Mobile

id (int) | category (int) | title (varchar)

Prices

id (int) | id_device (int) | price

Нужно вывести названия ВСЕ названия категорий из 1-ой таблицы, мобильники из 2-ой таблицы и цены из 3-ей таблицы, которым сопоставлены названия на телефоны из второй таблицы, которым в свою очередь сопоставлены категории из первой таблицы.

то бишь вывести в таком виде:

catalogue.category | mobile.title | prices.price

пробую запрос

[SQL]
SELECT catalogue.category, mobile.title, prices.price
FROM mobile
JOIN catalogue ON catalogue.id = mobile.category
JOIN prices ON prices.id_device = mobile.id
ORDER BY catalogue.category ASC , mobile.title ASC
[/SQL]

делает то что нужно, кроме одного но:
там где поля "prices.price" пустые он их не выводит, а пропускает. как это поправить?
 

ioleg

Новичок
1. А у тебя какого типа "prices.price", что оно может быть у тебя пустым?

2. На сколько я понял, "prices.price" - это стоимость, тогда запрос верен и он должен выводить все!!!

ПЫСЫ: это если у тебя тип ФЛОАТ. А запись с этим типом ну никак пустым не может быть. По-умолчанию - 0. А другой тип не совсем логично использовать. :)
 

Bitterman

Новичок
При чем тут значение по умолчанию? Поле prices.price останется пустым, если, например, для какого-либо телефона не указана цена.
 

zip111

Новичок
ioleg - имелось ввиду он = запрос. тип "prices.price" - варчар, но это не имеет значение.

Bitterman - абсолютно верно.

Сейчас постараюсь уточнить что я хочу:

при использовании моего запроса я получаю в результате:

category | title | price
samsung | sgh-x700 | 213
siemens | sx1 | 180
nokia | 8800 | 200

но у меня в базе то реально больше телефонов. Запрос выводит только те телефоны, на которые указана цена, а мне нужно что бы он выводил и без цены, например так:

category | title | price
samsung | sgh-x700 | 213
nokia | 7610| 180
nokia | 8800 |
SonyEricsson | z1010 |
 
Сверху