Я пытаюсь объединить две таблицы, как это ...
SELECT * FROM lists l
INNER JOIN products p USING (list_id)
Вот show create table
для обеих таблиц.
CREATE TABLE `lists` (
`list_id` bigint(20) NOT NULL AUTO_INCREMENT,
`list_name` varchar(255) NOT NULL,
`deleted` tinyint(4) NOT NULL DEFAULT '0'
PRIMARY KEY (`list_id`),
KEY `index1` (`list_name`),
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
CREATE TABLE `products` (
`product_id` bigint(20) NOT NULL AUTO_INCREMENT,
`list_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`deleted` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`product_id`),
KEY `index2` (`deleted`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
Вот результат вышеприведенного запроса:
l.list_id: l.list_name: l.deleted: p.product_id: p.deleted
1 Christmas 0 1 1
1 Christmas 0 2 0
1 Christmas 0 3 0
1 Christmas 0 4 0
4 New Year 0 8 0
4 New Year 0 9 0
4 New Year 0 10 0
Вы видите l.deleted
столбец там со всеми нулями? В таблице lists
есть некоторые строки с другими значениями, такими как 1, 2, ... в столбце deleted
. Но при объединении таблиц всегда отображается столбец deleted
, в котором есть все нули.
Почему это происходит? Что мне здесь не хватает?