ccop
Новичок
Выборка с двух таблиц и оператор OR
Есть запрос, такого типа
[SQL]
SELECT SQL_CALC_FOUND_ROWS u.ua_name AS name, u.ua_surname AS surname, k.ua_kap_name AS kname, r.id, r.author_id, r.description, r.city, r.date, r.type, r.author_type
FROM news AS r, users AS u, kap AS k
WHERE (
(
u.id = r.author_id AND r.type <3
) OR (
k.id = r.author_id AND (
r.type =3 OR r.type =4
)
)
) AND (
r.author_type =2
)
ORDER BY r.date DESC
LIMIT 0 , 20
[/SQL]
Суть заключается в следующем: Нужно из базы news выбрать записи, так, если r.type < 3, то берем информацию о том, кто разместил новость из users
А если r.type > 3 && r.type < 4, то информацию нужно брать с базы kap.
Проблема: если в базе есть записи, которые удовлетворяют условие k.id = r.author_id AND (r.type =3 OR r.type =4), то из таблицы users будут взяты все записи, ибо не налаживается ограничение эту таблицу.
Как решить эту проблему?
Спасибо!
Есть запрос, такого типа
[SQL]
SELECT SQL_CALC_FOUND_ROWS u.ua_name AS name, u.ua_surname AS surname, k.ua_kap_name AS kname, r.id, r.author_id, r.description, r.city, r.date, r.type, r.author_type
FROM news AS r, users AS u, kap AS k
WHERE (
(
u.id = r.author_id AND r.type <3
) OR (
k.id = r.author_id AND (
r.type =3 OR r.type =4
)
)
) AND (
r.author_type =2
)
ORDER BY r.date DESC
LIMIT 0 , 20
[/SQL]
Суть заключается в следующем: Нужно из базы news выбрать записи, так, если r.type < 3, то берем информацию о том, кто разместил новость из users
А если r.type > 3 && r.type < 4, то информацию нужно брать с базы kap.
Проблема: если в базе есть записи, которые удовлетворяют условие k.id = r.author_id AND (r.type =3 OR r.type =4), то из таблицы users будут взяты все записи, ибо не налаживается ограничение эту таблицу.
Как решить эту проблему?
Спасибо!