Извлечение данных из двух таблиц с использованием Range
У меня есть два стола, таблица тура и таблица дат тура.
- Таблица туров
- Я бы
- tour_title
Вот ссылка на стол для просмотра таблицы тура!
- Таблица tour_dates
- Я бы
- tour_id
- цена
Вот ссылка на таблицу для просмотра таблицы tour_date!
Сейчас я использую фильтр ценового диапазона, как
- От 10 до 50 долларов
- От 50 до 80 долларов
- От 80 до 100 долларов
Я пробовал много разных запросов на соединение и даже пытался для вложенного запроса, как этот.
$qry = "SELECT * FROM `tours` WHERE status='1' ";
$qry1 = mysqli_query($con,$qry);
while($data = mysqli_fetch_array($qry1)){
$qfilter = "SELECT * FROM `tour_dates` WHERE tour_id='".$data['id']."' AND (`price` BETWEEN 10 AND 50) ORDER BY price DESC ";
$qfilter1 = mysqli_query($con,$qfilter);
$tour_ob = mysqli_fetch_object($qfilter1);
$num = mysqli_num_rows($qfilter1);
if($num>0){
------
}
}
Пожалуйста, предоставьте любое решение. благодарю вас.
1 ответ
Решение
Вы можете использовать объединения для получения данных из обеих таблиц.
select t1.id,t1.tour_title,t2.price
from tours t1 inner join tour_dates t2 on t1.id=t2.tour_id
where t1.id=tour_id and (t2.price between 10 and 50) order by t2.price desc
Вы можете написать хранимую процедуру, которая будет обрабатывать ваши динамические условия.
CREATE PROCEDURE `procedure_name` (in in_condition varchar(1000))
BEGIN
set @query='select t1.id,t1.tour_title,t2.price
from tours t1 inner join tour_dates t2 on t1.id=t2.tour_id
where t1.id=tour_id ';
set @query=concat(@query,' and ',in_condition,' order by t2.price desc');
prepare stmt from @query;
execute stmt;
deallocate prepare stmt;
END