2015-11-23 1 views
2

Я работаю над проектом с помощью xamarin android, используя библиотеку sqlite.net. У меня есть запрос на выборку, который будет выполняться, и создать коллекцию пользовательских объектов под названием работника:sqlite select query с внешним ключом для другой таблицы

var command = conn.CreateCommand("SELECT * FROM tblWorkers"); 
var results = command.ExecuteQuery<Worker>(); 
ObservableCollection<Worker> workers = new ObservableCollection<Worker>(results); 
return workers; 

Один из столбцов является внешним ключом, и мне нужно, чтобы получить значение из этой таблицы просто интересно, что лучший способ сделайте это. Внешний ключ в таблице данных tblWorkers - это TitleID. В этой таблице находится varchar (datatable: tblTitles column: Title - nvarchar). Мне нужно просто узнать, что лучший способ сделать это?

ответ

1
var command = conn.CreateCommand("SELECT * FROM tblWorkers LEFT JOIN tblTitles ON tblWorkers.TitleID = tblTitles.id"); 

Теперь, выше будет работать, но в целом вы хотите, чтобы избежать SELECT * использования. Только получите нужные поля. В идеале, что-то вроде этого ...

var command = conn.CreateCommand("SELECT tblWorkers.SomeFieldYouWant, tblWorkers.SomeOtherFieldYouWant, ... , tblTitles.Title FROM tblWorkers LEFT JOIN tblTitles ON tblWorkers.TitleID = tblTitles.id"); 
+0

Я смотрел на использование соединения. Из любопытства, почему я хочу избежать использования *? –

+0

Короткий ответ: ** Производительность **. Вы не должны возвращать поля, которые вам не нужны, потому что вам требуется больше работы, чем требуется. Даже если сейчас вы используете все поля, я по-прежнему лично рекомендую явно перечислять все поля. Представьте будущее, когда вы измените базовую схему данных для чего-то совершенно не связанного и добавьте 50 новых столбцов. Ваш старый код теперь будет работать, чтобы вернуть их, а часть вашего приложения, которая вела себя годами и не была изменена, внезапно кажется более вялой. Для получения дополнительной информации, поиск вокруг - я на пределе персонажа! – LDMJoe

+0

Хорошо, я понял. Кстати, я получил ошибку неоднозначного имени столбца: TitleID. –

Смежные вопросы