2013-08-25 6 views
0

Пожалуйста, извините меня, если это повторный вопрос. Я пробовал искать здесь и в google, но я не мог точно найти то, что хотел.Android SQLite получение записей из одной таблицы на основе другой

У меня есть две таблицы A & B.
Таблица A Поля: id, название, описание, рейтинг.
Таблица B Поля: id, aId (привязана к таблице A), customerId, рекомендуется.

В таблице А содержатся элементы данных, для которых я храню средние кумулятивные рейтинги, предоставленные пользователями. Таблица B хранит другой атрибут для данных таблицы A. Он сохраняет рекомендуемый бит (1 для рекомендованных & 0 для не рекомендованных).

Я хочу перечислить все данные из таблицы A, но я хочу их отсортировать с использованием рекомендуемого бита из таблицы B. Итак, если в таблице A и 2 записи в таблице B записано 10 записей, а перечислены все эти 10 записей , два из таблицы B должны быть первыми, а затем остальные из таблицы A. Не имеет значения, является ли рекомендуемое значение бит равным 0 или 1. При перечислении других 8 записей из таблицы A я хочу перечислить записи исходя из их рейтинга в порядке убывания.

Может ли кто-нибудь, пожалуйста, направить меня в письменном виде на этот sqlite-запрос для Android-приложения? Заранее спасибо!

ответ

2

Левое соединение добавляет поле recommended к набору результатов (со значением NULL, если нет соответствующей записи B). Выражение recommended IS NULL или EXISTS(...) возвращает либо 0, либо 1:

SELECT DISTINCT A.* 
FROM A LEFT JOIN B ON A.id = B.aId 
ORDER BY B.recommended IS NULL, 
     A.rating DESC 

В качестве альтернативы:

SELECT * 
FROM A 
ORDER BY NOT EXISTS (SELECT 1 
        FROM B 
        WHERE B.aId = A.id), 
     rating DESC 
+0

Спасибо за быстрый ответ. Однако это не работает полностью. Это дает мне дубликаты записей из таблицы A и идентификатор поля из таблицы A также неверен во всех этих записях. Есть ли способ удалить дубликаты записей? Спасибо –

+0

Спасибо, ваш второй запрос работал на меня. –

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