У меня есть 3 разных таблицы, в которых на основе поиска в первой таблице я могу получить данные со второго и на основе поиска с первого и второго я могу получить данные из 3-й таблицы.Как получить данные из 3 таблиц в одном SELECT [MySQL]
таблицы выглядит следующим образом:
table cases
+-------+----------+------------+---------+
|case_id| car_model| vin | country |
+-------+----------+------------+---------+
| 1 | VW | ABCDEFG | EN |
+-------+----------+------------+---------+
| 2 | VW | GFEDCBA | PL |
+-------+----------+------------+---------+
table calculations
+-------+---------------+------------+---------+
|case_id|calculation_id | price | country |
+-------+---------------+------------+---------+
| 1 |45545662512 | 11000 | EN |
+-------+---------------+------------+---------+
| 1 |45545662512 | 7000 | PL |
+-------+---------------+------------+---------+
| 2 |1234561234 | 3000 | EN |
+-------+---------------+------------+---------+
| 2 |3214561234 | 6000 | EN |
+-------+---------------+------------+---------+
table positions
+-------+------------+------------+--------------+
|case_id|repairmethod| text |calculation_id|
+-------+------------+------------+--------------+
| 1 | L | hallo | 7894561234 |
+-------+------------+------------+--------------+
| 1 | L | hi1 | 45545662512 |
+-------+------------+------------+--------------+
| 2 | L | hi2 | 45545662512 |
+-------+------------+------------+--------------+
| 2 | E | hi3 | 45545662512 |
+-------+------------+------------+--------------+
| 2 | G | hi4 | 45545662512 |
+-------+------------+------------+--------------+
| 2 | L | hi5 | 3214561234 |
+-------+------------+------------+--------------+
| 2 | L | hi6 | 3214561234 |
+-------+------------+------------+--------------+
Как я написал:
Получить данные и case_id из таблицы № 1:
«SELECT * FROM случаи, когда Vin =: vin ORDER BY date_created DESC LIMIT 60 ";
На основе case_id я получаю от первого поиска таблицы в таблице № 2, возьмите последнюю строку:
"SELECT * FROM расчетов WHERE case_id =: случай И страна =: страна ORDER BY calculation_id DESC LIMIT 1";
Поиск в таблице № 3 на основе case_id из таблицы 1 и calculation_id из таблицы 2:
«SELECT текст из положений, где calculation_id =: calculationid И case_id =: case_id И repairmethod как 'L%' ПРЕДЕЛ 60 «;
Ожидаемый результат, если поиск пользователя для ABCDEFG, например:
Из случаев таблицы:
car_model = VW
country = EN
case_id = 1
Из расчетов таблицы:
calculation_id = 45545662512
price = 11 000
Из таблицы позиций:
text = hi1
text = hi2
Но этот запрос основан на PHP, хранении значений в variabiles и т. Д., Есть ли возможность записать все мои предыдущие записи в одном SELECT?
Я уже попробовать что-то с INNER JOIN
"SELECT * FROM cases v INNER JOIN calculations c
ON v.case_id = c.case_id
INNER JOIN positions p
ON v.case_id = p.case_id
WHERE v.vin = :vin
ORDER BY c.name DESC
LIMIT 4";
Но Есть несколько проблем, с ограничениями, с выбором с несколько Wheres, и так далее. Я что-то пропустил?
Спасибо за любую помощь.
Каков ваш ожидаемый результат? –
Hi @ZoharPeled отредактированный вопрос, я могу получить этот результат с помощью PHP, хранящего переменные, и я надеюсь пропустить этот – Andurit