2009-08-03 5 views
6

Il semble que la sélection par défaut pour Sequel soit "select *", ce qui provoque toutes sortes de problèmes lorsque vous ajoutez des jointures. À tout le moins vous vous retrouvez avec les mauvais identifiants dans vos objets (car il y aura alors plus d'une colonne "id" retournée). Faire quelque chose commeSuite sélectionnant trop de colonnes

.select("people.*") 

semble fonctionner, mais cela traite la chaîne transmise comme une colonne et la cite. Jusqu'à présent, j'ai dû revenir à SQL nu pour résoudre ce problème, mais je sais qu'il doit y avoir un meilleur moyen.

Répondre

5

Le comportement par défaut de Sequel est de sélectionner toutes les colonnes, mais il est facile de les remplacer. Si vous souhaitez ne sélectionner que toutes les colonnes d'une seule table:

.select(:people.*)

Si vous souhaitez utiliser une chaîne SQL littérale:

.select('people.*'.lit)

+6

Ces syntaxes ne fonctionnent pas pour moi, de suite 4.10. ': people. *' se plaint 'méthode non définie * pour: people: Symbol', et' 'people. *'.. lit' se plaint 'méthode non définie allumé pour" gens. * ": String'. ': 'les gens.' '' finissent par chercher '' des gens' '. '.select_all (: people)' fait l'affaire, cependant. – womble

+0

'select_all' accepte également plusieurs tables. Si vous voulez toutes les colonnes de quelques tables et une colonne spécifique d'une troisième table, utilisez 'select_all (: tbl1,: tbl2) .select_more (: tbl3__col)' – Kelvin

+2

''people. *'. Lit' est maintenant' Sequel. allumé ('people. *') ' – Kelvin