2016-08-22 6 views
1

У меня есть 2 таблицы:Колонка вставки из 2 таблицы в таблице 1

CheckInOut

Userid | Checktime | Checktype | VERIFYCODE | SENSORID | Memoinfo | WorkCode | sn | 

UserInfo

Userid | Name | Gender 

Я хочу, чтобы получить столбец Имя только UserInfo таблицу и вставить ее в таблицу checkinout соответствует их Userid, checkinout.userid=userinfo.userid

Ниже мой запрос, но я получаю синтаксическую ошибку вокруг userinfo, вы можете сказать, что мне не хватает?

Syntax Error: unexpected 'userinfo' (identifier)

SELECT checkinout.USERID, checkinout.CHECKTIME, checkinout.CHECKTYPE,checkinout.VERIFYCODE, checkinout.SENSORID, checkinout.Memoinfo, checkinout.WorkCode, checkinout.sn, userinfo.name 
from bio_raw.checkinout, bio_raw.userinfo 
join bio_raw.userinfo 
on checkinout.userid = userinfo.userid 

ответ

2

Вы не можете смешивать explizit и implizit присоединиться:

SELECT checkinout.USERID, checkinout.CHECKTIME, checkinout.CHECKTYPE,checkinout.VERIFYCODE, checkinout.SENSORID, checkinout.Memoinfo, checkinout.WorkCode, checkinout.sn, userinfo.name 
    from bio_raw.checkinout 
    join bio_raw.userinfo 
    on checkinout.userid = userinfo.userid 
+0

отлично работает! – Seryu

1

В строке from bio_raw.checkinout, bio_raw.userinfo, удалите , bio_raw.userinfo

  • При использовании JOIN нет необходимости упоминать более одного имени таблицы в FROM.
  • Я добавил псевдонимы таблиц CI, UI для лучшей читаемости.

Рабочий код будет:

SELECT CI.USERID 
    ,CI.CHECKTIME 
    ,CI.CHECKTYPE 
    ,CI.VERIFYCODE 
    ,CI.SENSORID 
    ,CI.Memoinfo 
    ,CI.WorkCode 
    ,CI.sn 
    ,UI.NAME 
FROM bio_raw.checkinout AS CI 
JOIN bio_raw.userinfo AS UI ON CI.userid = UI.userid 
1

Если вы хотите присоединиться к 2 таблицы нет никакой необходимости ставить все их в FROM param.

SELECT checkinout.USERID, checkinout.CHECKTIME, checkinout.CHECKTYPE,checkinout.VERIFYCODE, checkinout.SENSORID, checkinout.Memoinfo, checkinout.WorkCode, checkinout.sn, userinfo.name 
    from bio_raw.checkinout 
    join bio_raw.userinfo 
    on checkinout.userid = userinfo.userid 
3
SELECT 
    cio.`userid`, 
    cio.`checktime`, 
    cio.`checktype`, 
    cio.`memoinfo`, 
    cio.`sensorid`, 
    cio.`sn`, 
    cio.`verifycode`, 
    cio.`workcode`, 
    ui.`name`, 
    ui.`gender` 
FROM 
    checkinout cio 
    INNER JOIN userinfo ui 
    ON ui.`userid` = cio.`userid` 
1

Вам не нужно userinfo таблицы должны быть указаны в пункте FROM. Используйте приведенный ниже запрос, и я считаю, что он должен работать:

SELECT checkinout.USERID, checkinout.CHECKTIME, checkinout.CHECKTYPE,checkinout.VERIFYCODE, checkinout.SENSORID, checkinout.Memoinfo, checkinout.WorkCode, checkinout.sn, userinfo.name 
from bio_raw.checkinout 
join bio_raw.userinfo 
on checkinout.userid = userinfo.userid;