Я пытаюсь сделать запрос mysql с указанием столбцов, где userid = x и другие, где userid = y.
Моя проблема (что происходит в данный момент), если выбранный столбец от пользователя x не соответствует содержимому из того же столбца от пользователя y, запрос вернет null (поскольку у меня есть check-if, который объявляет переменные и только те переменные из другого печатаются …).
Мне нужно выбрать из 3 таблиц: членов, друзей и account_type:
1º от members.status (и других столбцов такое имя, месяц1-12 и фото), где members.id = $ _GET ['id']
2º from account_type.type Мне нужно сравнить members.acc_type где members.id = $ _SESSION ['user_id'].
3º из friends.cashed_month1-12 (и общая сумма столбца), где friends.friendID = $ _GET ['id']
Как я могу указать, какой идентификатор принадлежит каждому столбцу?
Я не знаю, как сделать это в одном единственном запросе, я могу сделать это отдельно …
Собственно, это то, что у меня есть:
SELECT friends.*, members.*, account_type.* FROM members INNER JOIN friends ON friends.friendID = members.id INNER JOIN account_type ON account_type.type = members.acc_type WHERE friends.friendID = ? AND members.acc_type = ?")) { $stmt->bind_param('isi', $_GET['id'], $_SESSION['acc_type'];
Из 2º, где у меня возникает эта проблема, я выбираю столбец, и мне действительно нужно указать, из какого идентификатора или из какой строки, потому что существует множество учетных записей с тем же атрибутом acc_type, что и указание того, какой идентификатор должен работать, если подключенный пользователь имеет другой acc_type из учетной записи друга. Я имею в виду, идея заключается в следующем: каждый пользователь, независимо от того, какой тип acc_type, может иметь друзей с разными acc_types.
Я тестировал, если подключенный пользователь и $ _GET ['id'] пользователь имеют один и тот же атрибут acc_type, все работает нормально, но если я изменю acc_type от подключенного пользователя, запрос не будет работать.
Заранее спасибо!
Наконец, я получил запрос, который работает (мне понадобилось пару часов), этот ответ может служить другим, поскольку это помогло мне:
SELECT members.*, account_type.*, friends.*, membersF.* FROM members INNER JOIN account_type ON members.acc_type = account_type.type INNER JOIN friends ON friends.userID = members.id INNER JOIN members AS membersF ON membersF.id = friends.friendID WHERE members.acc_type = ? AND friends.userID = ? AND membersF.id = ? $_SESSION['acc_type'], $_SESSION['user_id'], $_GET['id']
Некоторые объясняют:
INNER JOIN account_type ON members.acc_type = account_type.type
Это вернет тип acc_type для подключенного пользователя, и вы сможете распечатать столбцы, соответствующие этому типу account_type (вы можете добавить много столбцов, кроме бонуса).
INNER JOIN friends ON friends.userID = members.id
Здесь он будет возвращать столбцы в этой таблице, соответствующие идентификатору пользователя.
INNER JOIN members AS membersF ON membersF.id = friends.friendID
И, наконец, это вернет столбцы из членов, соответствующих этому ID, в этом случае ID друга.
Это все 🙂