Мой запрос в базу:
Select `username`, `email`, `type`,`role`
From users
inner join usertoken on users.idUser = usertoken.Users_idUser
union
select `Like`,`username`,`nameQuiz`
from `like`
inner join `users` on `like`.`Users_idUser` = `users`.`idUser`
inner join `quiz` on `like`.`Quiz_idQuiz` = `quiz`.`idQuiz`
Ответ:
Error Code: 1222. The used SELECT statements have a different number of columns
Таблица users
таблица like
И
И quiz
Существуют два основных правила, регламентирующие порядок использования оператора UNION:
Определения столбцов, данные из которых извлекаются в объединяемых запросах, не должны совпадать, однако должны быть совместимыми путём неявного преобразования.
Используйте алиасы, а если данных в одной таблице нет используйте константы типа 0, Null
Select
`username`,
0 as `like`,
`email`,
`type`,
`role`,
null as `nameQuiz`
From users
inner join usertoken on users.idUser = usertoken.Users_idUser
union
select
`username`,
`Like`,
null as `email`,
null as `type`,
null as role,
`nameQuiz`
from `like`
inner join `users` on `like`.`Users_idUser` = `users`.`idUser`
inner join `quiz` on `like`.`Quiz_idQuiz` = `quiz`.`idQuiz`
Ссылки по теме:
PS Расставляйте поля по одному на строке - так визуально легче контролировать правильность запроса.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей