Задавайте вопросы, мы ответим
Вы не зашли.
Здраствуйте, ув. эксперты. Есть такой вопрос по MYSQL
Имеются 2 таблицы:
1. Типы походов (id, цена, продолжительность, сезон...)
2. Конкретные даты походов (id, id_типа_похода, цена, дата_начала, дата_конца, сезон...)
Тоесть логика в том, что конкретные даты походов по умолчанию перенимают некоторые данные из типа похода, но могут также иметь и отличные варианты.
Для чего так сделано? Если поход пользователя устраивает, но не устраивает не одна из предлагаемых дат, он может записаться в тип похода, указав желаемые даты. При создании такой даты, он туда переносится.
Мне нужно провести поиск типа похода, по разным характеристикам (к примеру цена). Результатом должен стать список типов походов, которые подходят.
Тоесть к примеру я ищу все походы, цена которых >20$, но у меня находит только те типы походов, у которых ЕСТЬ конкретные даты. Если таких дат пока нет, то не ищется. Как сделать, чтобы искало нормально?
Ищу так:
SELECT hike_type.id FROM hike_type LEFT OUTER JOIN hike ON hike_type.id=hike.hike_type_id WHERE hike.cost > 20 Group by hike_type.id
Мне нужно получить id тех типов походов, которые удовлетворяют условию.
Неактивен
Ищите просто по типам, а не по походам?
SELECT id FROM hike_type WHERE cost > 20
Неактивен
^_^ конечно решение класс, но не подходит. Дело в том, что поиск может производится по mincost, maxcost, datestart, dateend, rating, leader_id, hike_region.
Из них:
mincost, maxcost (тоесть cost) есть И в hike И в hike_type
datestart, dateend,leader_id есть только в hike
rating, hike_region есть только в hike_type
Впринципе как мне кажется придется юзать VIEW, и в нем использовать CASE. Но я не могу придумать как, help pls
Отредактированно Nt.Mag1steR (03.03.2009 12:46:41)
Неактивен
Тогда Вам нужна более умная логика на стороне клиента (для выборки из двух таблиц) или
представление (но тогда оно будет тормозить, создавая временные таблички)
CREATE VIEW vname AS
SELECT * FROM hike
UNION
SELECT *, NULL, NULL, ... FROM hike_type
Неактивен
спасибо. Помогло
Неактивен