MYSQL-запрос на выбор из нескольких таблиц, порядок по дате, различные структуры таблиц - PullRequest
1 голос
/ 17 января 2012

Я делаю новостную ленту и хочу выбрать из нескольких таблиц. Две таблицы, на которых я сконцентрируюсь на этом вопросе, это «сообщения» и «фотографии».

Вот мой запрос только для сообщений:

mysql_query("
            SELECT * FROM posts 
            WHERE toID='$id' AND state='0' 
            ORDER BY id DESC LIMIT 10");

Таблица моих сообщений имеет следующие имена столбцов:

Table: posts

id  toID   fromID   post   state     date
1    1       1      Aloha    0       1
2    1       1      Hello    0       3

Моя таблица фотографий имеет следующее:

Table: photos

id  userID  photo    state    date
1     1       2       0       2
2     1       6       0       4

Ожидаемый результат:

Aloha
2
Hello
6

Может быть, что-то вроде:

 SELECT * 
 (SELECT * FROM posts WHERE toID=$id AND state=0) AND
 (SELECT * FROM photos WHERE userID=$id AND state=0)
 ORDER BY date

Когда он выбирает их из базы данных, он должен выбирать, где toID и userID совпадают. состояние должно быть равно 0 для обоих, (0 означает видимый), и они должны быть упорядочены по дате. Также мне нужно создать новую переменную для передачи в мой запрос, чтобы затем я мог в своем php определить, из какой таблицы поступает информация. Наконец, я хотел бы сгруппировать фотографии по дате, так что предположим, что пользователь загрузил 20 фотографий в течение 30-минутного периода, они вернут только одну строку. Я использую php time () для хранения своей даты.

1 Ответ

2 голосов
/ 17 января 2012

Если вы хотите собрать все записи и фотографии вместе, вы можете использовать:

SELECT po.*, ph.* FROM posts po
LEFT JOIN photos ph
    ON po.toID = ph.userID
WHERE po.state = 0
  AND ph.state = 0
ORDER BY po.id DESC, ph.date DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...