2010-11-22 18 views
1

Android'de SQLite ile çalışıyorum. sqlite sorguyu seç

Table 1: cars 

_id(int,pri-key) 
reg(text) 
type(text) 

Table 2: jobs 

_id(int,foreign-key) 
date(date) 

Bana son 3 hafta içinde bir iş vardı DEĞİL tüm arabalar alacak sqlite statment gerekir:

Benim db 2 tablolar vardır. IAM aslında C# uygulamayı taşıma ve (MySQL) Bunun için kullanmak statment

SELECT c.id, c.reg, c.type FROM buses c WHERE NOT EXISTS (SELECT NULL FROM jobs j WHERE j.id = c.id AND j.date >= CURRENT_DATE - INTERVAL 21 DAY 

olduğu Ama android içinde ile çalışıyorum SQLiteDatabase nesnesi bu sorguyu aday olacağını nasıl farklı bir biçim alır?

Şimdiden teşekkürler.

cevap

2

böyle bir şey denemek istiyorum:

SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id WHERE B._id IS NULL OR B.date < date('now', '-21 days');

SOL DIŞ JOIN

, arabalar tablosundan tüm değerler katılmak kriterleri eşleşmeyen olanlar da dahil olmak çıkışı (gösterilmesini sağlar - yani iş tablosunda bir girişi olmayanlar). 21 günden fazla eski NEREDE kriterleri ya filtreleri, iş tablosunda bir giriş (B._id IS NULL) yok olanlar veya hangilerinin B.date < date('now', '-21 days') Ben varsayıyorum Tabii

, sadece 1 giriş üzerinde olacak her araba için İşler tablosu. Daha fazla olacaksa, en son tarihi almak için muhtemelen MAX'u kullanmak istersiniz.

ÇALIŞMA ÇÖZÜM:SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id GROUP BY A._id HAVING B._id IS NULL OR MAX(B.date) < date('now', '-21 days');

+0

çalışmıyor im ben de Sqlite3 kabuk içinden sorguyu çalıştıran çalıştı – brux

+0

affriad ve ben "sözdizimi hatası – brux

+0

btw 1 araba birçok ivlenmi – brux