ich diese Abfrage habe, die fein auf mysql funktioniert und senden Sie das gewünschte Ergebnis, aber sqlx haben Schwierigkeiten, sie zu handhaben:JOIN SQLX Ursachen ‚fehlenden Zielnamen‘ mit
var jokes []model.Joke
err := shared.Dbmap.Select(&jokes, "SELECT * FROM joke INNER JOIN jokevote ON joke.id=jokevote.joke_id AND jokevote.vote=? AND joke.user_id=?", 1, userId)
if err != nil {
log.Println(err)
}
Zur Laufzeit ich kein Ergebnis erhalten, aber diese Fehlermeldung im Terminal:
fehlt Zielname joke_id
ich dieses Problem nicht haben, wenn eine einzelne Tabelle abzufragen.
Also ich frage mich, was hier falsch ist und wie es zu beheben?
UPDATE: Hier sind die structs:
type Joke struct {
ID int `db:"id" json:"id"`
UserID int `db:"user_id" json:"user_id"`
Title string `db:"title" json:"title"`
Content string `db:"content" json:"content"`
...
}
type JokeVote struct {
ID int `db:"id" json:"id"`
JokeID int `db:"joke_id" json:"joke_id"`
UserID int `db:"user_id" json:"user_id"`
Vote int `db:"vote" json:"vote"`
}
Beinhaltet Ihr 'model.Joke' ein Feld mit einer' db: "joke_id" 'Annotation? – yazgazan
Nein. Es hat nur 'db:" id "' für den Primärschlüssel. Habe gerade die Strukturen hinzugefügt. – Karlom
Dann weiß sqlx nicht, welches Mitglied von 'model.Joke' zu Scan' joke_id'. Sie können entweder ein 'JokeID'-Feld zu' model.Joke' hinzufügen (mit der entsprechenden 'db'-Annotation) oder die Spalten angeben, die Sie manuell in Ihrer Abfrage erhalten möchten (anstelle von' SELECT * '). – yazgazan