Хорошо, у меня есть две таблицы mysql, называемые книгами, а другая - read_tracking.
Я написал запрос соединения ниже: $query = "SELECT * FROM books inner join reading_tracking on book_num = book_id;
Моя дилемма заключается в том, что я не хочу, чтобы все из книг я хотел получить запрос, который теоретически будет выглядеть примерно так:
"SELECT * FROM books
where reading_status = 1 inner
join SELECT * FROM reading_tracking
on book_num = book_id";
Если я попробую это, как было предложено:
SELECT * FROM books b
INNER JOIN reading_tracking rt
ON b.book_id = rt.book_num
WHERE rt.reading_status = 1;
Дело в моей программе: не все книги в таблице книг находятся в read_tracking, пользователь должен сделать дополнительный шаг, поэтому я не хочу, чтобы книги, похожие на обе таблицы, мне нужны все книги из книг, где read_status = 1; но вы хотите, чтобы все книги читали readtracking.
Я полагаю, что column book_num
из таблицы books
, book_id
- из таблицы reading_tracking
. Сначала соедините 2 таблицы, затем используйте WHERE
для фильтрации условия:
SELECT * FROM books b
INNER JOIN reading_tracking r
ON b.book_num = r.book_id
WHERE b.reading_status = 1;
Ваш синтаксис должен иметь SELECT [x] FROM
за которым следует INNER JOIN
, а затем вам нужно ON
чтобы указать, какое поле является синонимом между двумя таблицами. В вашем примере я предполагаю, что у вас есть столбец book_id
в books
и столбец book_num
в reading_tracking
.
Предложение WHERE
должно появиться после ON
, и дополнительно должно указать, какую из двух таблиц вы хотите найти в столбце.
Это можно увидеть в следующем:
SELECT * FROM books b
INNER JOIN reading_tracking rt
ON b.book_id = rt.book_num
WHERE rt.reading_status = 1;
Это будет искать books
для любой строки, которая имеет reading_status
из 1
в таблице reading_tracking
.
Вы можете использовать подзапрос перед выполнением JOIN, как показано ниже:
SELECT *
FROM (SELECT * FROM books WHERE reading_status=1) A
INNER JOIN reading_tracking B on B.book_num=A.book_id;
См. Использование псевдонима MySQL, чтобы сделать запросы более читаемыми