Serhioromano
@Serhioromano
Web Developer

Как одним запросом получить данные из 2х строк выборочно?

Предположим есть табилца Rules

ID | Rule    | ItemID | Access
1  | books   | 0      | 1
2  | books   | 1      | 0
3  | shelves | 0      | 1


Например это раздел книг доступ открыт 1, но книга 1 закрыта. Это типа правила. Там все конечно сложнее очень много данных но это то что мне надо что бы решить задачу.

Значит задача такая, создать запрос, так что бы проверить есть ли доступ на книгу. Но вернуть запрос должен не 1 или 0 а запись или отсутствие записей для exists.

Ну вот мы выбираем.

SELECT * FROM books WHERE exists(
    SELECT 1 FROM rules WHERE rule = 'books' AND itemid = books.id AND access = 1
)


Так работает. Я могу вывести только те книги к которым есть доступ.

Но что если например я выбираю shelves?

У полки нету записи на конкретную полку поэтому естественно полок мы не увидим.

А как мне сделать что бы если нет ссылки на конкретную запись, использовать запись общую 3 | shelves | 0 | 1 ?
  • Вопрос задан
  • 197 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Oraclist
Сергей, не понятна постановка задачи.
Будьте добры, то же самое, только другими словами.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы