Как пересечь несколько таблиц в MySQL

Я настроил страницу php, так что есть несколько вариантов ввода данных, которые помещаются в несколько временных таблиц, каждая из которых разделена запросом базы данных на основе 1 условия, указанного во входных данных. Поэтому, если входные данные имеют возраст> 10 и размер обуви> 6, а рост> 60, будут три временные таблицы table0, table1 и table2, где table0 — только возраст данных> 10, а table1 — только размер данных> 6, а таблица 2 — только высота данных> 60.

Мне интересно, как их пересечь, чтобы я получал только те результаты, которые соответствуют всем требованиям с возрастом> 10 и размером обуви> 6 и ростом> 60. Моя попытка использовать предложение «ГДЕ СУЩЕСТВУЕТ» приведена ниже, но она не работает.

SELECT *
FROM table0 t0
WHERE EXISTS
(SELECT *
FROM table1 t1
WHERE EXISTS
(SELECT *
FROM table2 t2
WHERE t0.age = t1.age = t2.age
AND t0.shoesize = t1.shoesize = t2.shoesize
AND t0.height = t1.height = t2.height));

0

Решение

Обратите внимание, что подобные запросы без использования первичного ключа таблицы становятся громоздкими, поэтому я рекомендую добавить первичный ключ.

Тем не менее, запрос, который вам нужен, довольно близок к тому, что вы уже пытались:

SELECT *
FROM table0 t0
WHERE EXISTS (
SELECT 1
FROM table1 t1
WHERE t1.age = t0.age AND t1.gender = t0.gender
AND t1.shoesize = t0.shoesize AND t1.weight = t0.weight
AND t1.height = t0.height AND t1.eyes = t0.eyes) AND
EXISTS (
SELECT 1
FROM table2 t2
WHERE t2.age = t0.age AND t2.gender = t0.gender
AND t2.shoesize = t0.shoesize AND t2.weight = t0.weight
AND t2.height = t0.height AND t2.eyes = t0.eyes)

Заметка: Запрос выше будет работать, только если ни одно из значений не равно NULL.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]