2017-07-20 4 views
-1

Ich möchte Ergebnisse von joke Tabelle erhalten, wo Witze in jokevote Tabelle heraufgeladen werden. HierWie man LINKER JOIN-Abfrage mit sqlx machen?

ist die Abfrage:

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) wenn err = nil { fmt.Println ("% v \ n", err)
}

aber ich bekomme diese Fehlermeldung:

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE joke.user_id=? AND jokevote.user_id=? AND jokevote.vote=1' at line 1

ich auch versucht haben:

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

“, 1)

Und bekam den gleichen Fehler. Ich sah the docs und konnte kein Beispiel für solche Joins finden. Also frage mich, wie ich es beheben kann.

+1

Dieser Fehler bezieht sich nicht auf 'sqlx' oder' go'. Sie haben einen SQL-Syntaxfehler. Führen Sie Ihre SQL-Abfrage in Ihrem DB-Editor aus und beheben Sie Ihre Abfrage. Dann verwende diese Abfrage in deinem Go-Code. – jeevatkm

+0

Wenn Sie 'LEFT JOIN' verwenden, müssen Sie eine 'ON'-Klausel haben; sonst ist die LINKE bedeutungslos. –

Antwort

2

Die Beispiele würde mich in den MariaDB docs. Was Sie vermissen, ist die on Klausel, die Mariadb sagt, wie man den 2 Tabellen beitritt. Sie können die Old-School-Join-Syntax nicht mit left join verwenden, indem Sie die Join-Kriterien in die where-Klausel einfügen.

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

Guter Tipp. Allerdings bekomme ich diesen Fehler zur Laufzeit noch: 'fehlender Zielname joke_id'. Irgendwelche Ideen, warum dies geschieht? – Karlom

+0

Keine Ahnung, das ist keine SQL-Fehlermeldung. Es scheint nichts mit der Frage zu tun zu haben, die Sie gerade gestellt haben. Wenn Sie eine andere Frage haben, stellen Sie bitte eine neue Frage. – Shadow

1

SQL-Abfrage sollte wie:

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