MariaDB: не работает несколько объединений, где условие поиска 1 в столбце TINYINT не работает

У меня есть таблицы под названием person а также book а также image а также bookhit,

Человек имеет id, name и книга имеет id, owner_id, info и изображение имеет столбец для id, owner_id, url а также thumbnail который является TINYINT (В базе данных половина строк 0с и 1s.) Кстати, в столбце изображений хранятся изображения обложки книги в двух версиях: big-one и thumbnail. Стол bookhit хранит время, когда книга была извлечена из базы данных и имеет столбец hits,

Поэтому я попробовал несколько INNER JOIN, чтобы получить все эскизы для самых популярных книг. SQL-запрос выглядит следующим образом:

SELECT `imagehit`.`hits`, `person`.`name`, `book`.`info`, `image`.`url`, `image`.`thumbnail` FROM `imagehit`
INNER JOIN `person` ON `person`.`id`=`book`.`owner_id`
INNER JOIN `image` ON `image`.`owner_id`=`book`.`id`
ORDER BY `imagehit`.`hits` DESC
WHERE `image`.`thumbnail`=1
LIMIT 10;

И это не работает, хотя половина строк 1в image,thumbnail, Если я изменю следующую строку:

WHERE `image`.`thumbnail`=1

к

WHERE `image`.`thumbnail`=0

Это работает. Ну, я пошел в image таблица и сделал простой запрос, подобный следующему:

SELECT * FROM `image` WHERE `image`.`thumbnail`=0;

И дал мне общее количество строк, хранящихся в таблице. Но когда я просматриваю image стол в phpMyAdmin Я вижу, что есть 1хранятся в таблице.:(

Есть идеи, почему это происходит? заранее спасибо.

Табличные определения:

CREATE TABLE `image` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `owner_id` int(11) NOT NULL,
 `thumbnail` tinyint(1) NOT NULL,
 `url` varchar(255) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `image_url` (`url`),
 KEY `image_owner_id` (`owner_id`),
 CONSTRAINT `image_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `book` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1450 DEFAULT CHARSET=utf8

CREATE TABLE `person` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) NOT NULL,
 `url` varchar(60) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `person_url` (`url`),
) ENGINE=InnoDB AUTO_INCREMENT=6287 DEFAULT CHARSET=utf8

CREATE TABLE `book` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `owner_id` int(11) NOT NULL,
 `book` varchar(3000) NOT NULL,
 `info` varchar(3000) NOT NULL,
 `url` varchar(60) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `book_url` (`url`),
 KEY `book_owner_id` (`owner_id`),
 CONSTRAINT `book_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `person` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=725 DEFAULT CHARSET=utf8

CREATE TABLE `imagehit` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `owner_id` int(11) NOT NULL,
 `person_id` int(11) NOT NULL,
 `hits` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `imagehit_person_id` (`person_id`),
 KEY `imagehit_owner_id` (`owner_id`),
 KEY `hits` (`hits`),
 CONSTRAINT `imagehit_ibfk_1` FOREIGN KEY (`owner_id`) REFERENCES `image` (`id`),
 CONSTRAINT `imagehit_ibfk_2` FOREIGN KEY (`person_id`) REFERENCES `person` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=725 DEFAULT CHARSET=utf8

Доказательство того, что я не сумасшедший

Я вставил данные с помощью Peewee, когда я создал строку, которую я установил thumbnail=True если изображение было миниатюрой и как thumbnail=False если не было Колонка thumbnail это поле BooleanField в Peewee.

0 ответов

Другие вопросы по тегам