Как сделать запрос влево, используя sqlx?

Я хотел бы получить результаты от joke стол, в котором шутят jokevote Таблица.

Вот запрос:

var jokes []model.Joke
err := shared.Dbmap.Select(&jokes, "    SELECT  *
    FROM  joke
    LEFT JOIN  jokevote
    WHERE  joke.user_id=?
      AND  jokevote.user_id=?
      AND  jokevote.vote=1

", userId, userId) if err! = nil {fmt.Println ("% v \ n ", err)
}

Но я получаю эту ошибку:

Ошибка 1064: у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который следует использовать рядом с WHERE joke.user_id=? И jokevote.user_id=? AND jokevote.vote=1'в строке 1

Я также попробовал:

err := shared.Dbmap.Select(&jokes, "    SELECT  *
    FROM  joke
    LEFT JOIN  jokevote
    WHERE  joke.user_id=jokevote.user_id
      AND  jokevote.vote=?

", 1)

И получил ту же ошибку. Я просмотрел документы и не смог найти ни одного примера таких соединений. Так интересно, как я могу это исправить.

2 ответа

Решение

Примеры будут мне в документах mariadb. Чего вам не хватает, так это on предложение, которое говорит mariadb, как объединить 2 таблицы. Вы не можете использовать синтаксис соединения старой школы с left join положить критерии объединения в where пункт.

SELECT * FROM joke
LEFT JOIN jokevote ON joke.user_id=jokevote.user_id
WHERE jokevote.vote=?

Sql запрос должен выглядеть так:

"SELECT * FROM joke LEFT JOIN jokevote ON joke.user_id=jokevote.user_id WHERE  jokevote.vote=?"
Другие вопросы по тегам