У меня есть 2 таблицы:
$sql = "CREATE TABLE $media_table (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(50) NOT NULL,
`title` varchar(255) DEFAULT NULL,
`description` varchar(2000) DEFAULT NULL,
`playlist_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
INDEX `playlist_id` (`playlist_id`),
) $charset_collate;";
$sql = "CREATE TABLE $taxonomy_table (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(10) NOT NULL,
`title` varchar(500) NOT NULL,
`media_id` int(11) NOT NULL,
`playlist_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
INDEX `media_id` (`media_id`),
CONSTRAINT `mvp_taxonomy_ibfk_1` FOREIGN KEY (`media_id`) REFERENCES {$media_table} (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) $charset_collate;";
Допустим, я хочу выбрать все строки из media_table, где playlist_id = 5 и title из taxonomy_table = "sport, football".
Я мог бывыполнить 2 запроса, сначала получить все media_id из таксономической таблицы, где title = "..." И playlist_id = "5", затем второй запрос выбрать все строки из media_table WHERE id IN (идентификаторы).
относится ли это кможет быть, какой-то запрос JOIN?
Я пробовал это, но я не получаю желаемых результатов:
$query = "SELECT * FROM {$media_table}
INNER JOIN {$taxonomy_table}
ON {$media_table}.id = {$taxonomy_table}.media_id
WHERE {$taxonomy_table}.type='tag' AND {$taxonomy_table}.title IN ($arg) AND {$taxonomy_table}.playlist_id=%d
ORDER BY {$media_table}.order_id";
Кажется, что он смешивает все столбцы из обеих таблиц в результаты, но я толькохотите получить строки из media_table, которые имеют заголовок (и) из taxonomy_table.