Вопрос по php, mysql, sql – Данные из двух таблиц с одинаковыми именами столбцов

3

У меня есть таблица для пользователей. Но когда пользователь вносит какие-либо изменения в свой профиль, я сохраняю их во временной таблице, пока не утвердлю их. Затем данные копируются в оперативную таблицу и удаляются из временной таблицы.

Я хочу добиться того, чтобы при просмотре данных в панели администратора или на странице, где пользователь мог дважды проверить перед отправкой, я хочу написать один запрос, который позволит мне получать данные из обеих таблиц, где идентификатор в обоих равняется $ userid. Затем я хочу отобразить их в виде таблицы, где старое значение отображается в левом столбце, а новое значение отображается в правом столбце.

Я нашел некоторые решения sql, но я не уверен, как использовать их в php для вывода результатов, поскольку столбцы в обоих имеют одинаковое имя.

Ваш Ответ

4   ответа
1

Предположим, у вас есть, например, поле имени в двух таблицах. Таблица 1 логин и таблица 2 информация. Сейчас

SELECT login.name as LoginName , information.name InofName 
FROM login left join information on information.user_id = login.id

Теперь вы можете использоватьLoginName а такжеInofName где угодно

Как вы можете автоматически псевдоним нескольких имен столбцов? Например, если я хотел выбрать * из обеих таблиц? salmanhijazi
Это не сработает, иначе имена столбцов в таблице должны отличаться, тогда все будет в порядке, но хорошей практикой является выбор только тех столбцов, которые необходимы
1

вы можете переименовать столбец только для результата этого запроса.

SELECT
    `member.uid`,
    `member.column` AS `oldvalue`,
    `edit.column` AS `newvalue`
FROM member, edit
WHERE
    `member.uid` = $userId AND
    `edit.uid` = $userId;

Что-то в этом роде должно работать для вас. Хотя SQL не является моей сильной стороной, я уверен, что этот запрос не будет работать как есть, даже для таблицы с правильными полями и значениями.

7

AS к имени столбца позволит вам псевдоним его к другому имени.

SELECT table1.name AS name1, table2.name AS name2, ...
  FROM table1
  INNER JOIN table2
    ON ...
Это больно :(. Хорошо, позвольте мне попробовать. salmanhijazi
Вы не можете ". Вы должны псевдоним каждого имени по своему усмотрению.
Как вы можете автоматически псевдоним нескольких имен столбцов? Например, если я хотел выбрать * из обеих таблиц? salmanhijazi
0

JOIN, И вы можете получить все данные из 2 таблиц в одном запросе MySQL.

SELECT * FROM `table1`
JOIN `table2` ON `table1`.`userid` = `table2`.`userid`
WHERE `table1`.`userid` = 1

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