|
|
|
| У меня есть 2 таблицы:
Таблица с товарами:
CREATE TABLE `tovar` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nazvanie` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3;
INSERT INTO `tovar` VALUES (1,'Televizor');
INSERT INTO `tovar` VALUES (2,'Telefon');
|
и таблица с рейтингом:
CREATE TABLE `reiting` (
`id` int(11) NOT NULL DEFAULT '0',
`kolvo` int(11) DEFAULT NULL,
`total` int(11) DEFAULT NULL
) ENGINE=MyISAM;
INSERT INTO `reiting` VALUES (1,2,8);
|
Нужно создать такой запрос, чтобы он выводил ВСЕ товары с рейтингом, мой запрос:
SELECT tovar.*, reiting.* FROM tovar, reiting WHERE tovar.id = reiting.id;
|
выводит только те товары, которые имеют рейтинг, мне нужно его модернизировать чтобы он выводил все товары вне зависимости имеется у товара рейтинг или нет | |
|
|
|
|
|
|
|
для: serg_b
(23.11.2011 в 13:44)
| | Вместо запятой в FROM между именами таблиц, используйте LEFT JOIN, кстати WHERE в этом случае лучше заменить на ON - тогда у вас условие будет срабатывать в момент объединения таблиц, вместо того, чтобы отбирать данные при помощи WHERE после того, как две таблицы объединены в большую мега-таблицу. | |
|
|
|
|
|
|
|
для: cheops
(23.11.2011 в 14:03)
| | Можете код запроса написать если несложно | |
|
|
|
|
|
|
|
для: serg_b
(23.11.2011 в 14:25)
| | Имеется в виду вот что
SELECT
tovar.*,
reiting.*
FROM
tovar
LEFT JOIN
reiting
ON
tovar.id = reiting.id;
|
| |
|
|
|
|
|
|
|
для: cheops
(23.11.2011 в 14:27)
| | Спасибо Cheops! А подскажи пожалуйста как сделать чтобы выводилась такая таблица:
1 столбец - название товара
2 столбец - его рейтинг (столбец total деленное на столбец kolvo)
Заранее спасибо! | |
|
|
|
|
|
|
|
для: serg_b
(23.11.2011 в 14:42)
| | Можно поступить следующим образом
SELECT
tovar.nazvanie AS nazvanie,
reiting.total / reiting.kolvo AS total
FROM
tovar
LEFT JOIN
reiting
ON
tovar.id = reiting.id;
|
| |
|
|
|