Error Code: 1222. The used SELECT statements have a different number of columns

213
11 мая 2018, 14:53

Мой запрос в базу:

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

Answer 1

Существуют два основных правила, регламентирующие порядок использования оператора 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`

Ссылки по теме:

  • wikipedia про SQL Union

PS Расставляйте поля по одному на строке - так визуально легче контролировать правильность запроса.

READ ALSO
Скопировать столбец из одной базы в другую?

Скопировать столбец из одной базы в другую?

Ребята такой вопрос есть две одинаковые базы данных mysql baza1 и mysql baza2 , мне нужно из baza1 c таблицы board скопировать два столбца и перенести их в baza2 в таблицу...

195
Ошибки во встроенных библиотеках xutility и vector (Visual Studio 2012)

Ошибки во встроенных библиотеках xutility и vector (Visual Studio 2012)

Компилировал на Visual Studio 2012В самом коде ошибок нет, но если нужен код, то:

212
Ошибка: 'resize_callbac': undeclared identifier. В чем может быть ошибка?

Ошибка: 'resize_callbac': undeclared identifier. В чем может быть ошибка?

Думаю, в том, что он объявлен и определен после использования

233
Постоянная проверка условия. MFC CFormView C++

Постоянная проверка условия. MFC CFormView C++

Как организовать, чтобы постоянно проверялось условие в программеSDI, где главное окно класс CFormView(диалоговое окно)

205