Intereting Posts
Как получить Dropzone.js для загрузки файлов только при нажатии кнопки отправки? Codeigniter Cart не может добавлять элементы Как вы получаете ширину и высоту изображения SVG в PHP? Как перенаправить маршрут с помощью метода контроллера PHP. Может ли автоматическая обработка каждой переменной $ _POST быть проблемой безопасности? Как я могу изменить meta (alt и название) в миниатюре каталога, миниатюре продукта? – Woocomerce Подсказка PHP Traversable type Отправлять уведомление по электронной почте при изменении статуса заказа от ожидающего до отмены Как получить котировки акций с помощью Google Finance API? Google App Engine PHP на окнах Force Загрузить CSV-файл Получить последний идентификатор вставки из последней вставленной строки utf-8 для проблемы кодирования iso-8859-1 Вывод инструкции Mysqli разбивает вставку изображения в базу данных Поиск файла XML с использованием PHP

select from multipe tables join return null, если столбцы не совпадают

Я пытаюсь сделать запрос 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 друга.

Это все 🙂