Как связать таблицы MySQL в phpMyAdmin
Опубликовано: 12.10.2016
Здрасти!
Очень прошу прощения, (уверен) должно быть на форуме кое-где уже спрашивали и отвечали - но не могу отыскать уже некоторое количество дней. Очень не пинайте, я в муське новичок - новее некуда)
Задача чуть не из учебника:
таблица1(открытки)
id_1 name
1 открытка1
2 открытка2
3 открытка3
4 открытка4
5 открытка5
.
1000 открытка1000
таблица2(теги)
id_2 name
1 голубая
2 забавная
3 перфорация
4 винни пух
5 1май
.
1000 валентинка
таблица3(связи)
id_1 id_2
1 1
1 4
1 493
2 3
2 21
и т.д.
Другими словами любая открытка имеет огромное количество тегов (малая, денек рождение, розовая, со звуком, и тд).
необходимо что бы юзер навыбирал галками тегов и получил конкретно ту открытку(ки) что соответствует всем избранным тегам.
я делал так:
$mass = "'валентинка','музыкальная',,,";
SELECT distinct * FROM
открытки AS t1
JOIN
связи AS t2
JOIN
теги AS t3 ON t1.id_1 = t2.id_2 AND t2.id_2 = t3.id_2 WHERE t3.name IN ($mass)
и делал так:
SELECT distinct * FROM открытки WHERE id_1 in (SELECT id_2 FROM связи WHERE ids in (SELECT id_2 FROM теги WHERE name in ($mass)))
Оба работают, Но находятся все открытки с "музыкой" и "валентинкой", другими словами даже те где совпал только один тэг. (distinct не пашет)
Люди добрые! Что как это должно быть?!
Спасибо!
(Создание БД) 4. Создание связей между таблицами в Delphi