2016-03-31 10 views
0

Şu anda "USER_ID" ve "BILLING_ID" alanlarına sahip iki tablo var: "tc_services" ve "tc_users". Ben ...Eksik girdiyi sorgulamak için 2 tabloya katılma

A) "tc_services" ile eşleşen bir "USER_ID" içermeyen bir "BILLING_ID"

B) "tc_users" yok nereye herhangi bir sonuç bulma birlikte bu sorgulamak gerekir "tc_services"

Aşağıdaki gibi bir JOIN sorgu deyimi oluşturmaya çalışıyorum ancak şu ana kadar çözemiyorum. Herhangi bir yardım takdir edilecektir!

SELECT * 
FROM tc_services AS services 
JOIN tc_users AS users 
WHERE services.USER_ID NOT IN users.USER_ID AND services.BILLING_ID = ''; 

Users

Services

Yorumunuzu gördükten sonra
+0

Ben Bunun yerine bir 'Katılın'

Geliş bu ilgili cevabı daha 'Birlik' kullanmak isteyebilirsiniz gibi geliyor Ne istediğini anlamada sorun yaşıyorum. İlgili tablo şemalarını, örnek verilerini ve beklenen çıktıyı kaydeder misiniz? – Keeleon

+0

Kullanıcılar arasında giriş bulunmayan hizmetler mi arıyorsunuz? Veya kullanıcılarda bir giriş, ancak USER_ID içermeyen. Hizmetler ve kullanıcılar arasındaki yabancı anahtar nedir? Tablo şemasının bu sorgunun nasıl oluşturulacağını görmek için çok yardımcı olacağını kabul ediyorum. –

+0

Şemanın resimlerini orijinal gönderiye ekledim. Temel olarak "tc_services" içindeki girişleri arıyoruz. A) "BILLING_ID" değer ayarına sahip değiliz ve B) "tc_users" tablosunda olmayan bir "USER_ID" değer kümesine sahipler. –

cevap

0

şey gibi:

SELECT SERVICE_ID, COUNT(users.USER_ID) 
FROM tc_services AS services 
LEFT JOIN tc_users AS users ON services.USER_ID = users.USER_ID 
WHERE services.BILLING_ID = '' 
GROUP BY services.SERVICE_ID HAVING COUNT(users.USER_ID) = 0 
+0

mysql sözdizimi biraz kapalı olabilir, genellikle sql server ile çalışıyorum ve bu test edilmez. –

+0

Yardımlarınız için teşekkür ederiz! "*)" Ve "users.USER_ID =" arasında görünen, ancak şimdi ne olduğunu anlamaya çalışan bir SQL hatası alıyorum. –

+0

Teşekkürler! Daha fazla hata yok, ancak sonuçların az olması gereken bir sonuç yok. Sorunun "ON users.USER_ID = services.USER_ID" olduğunu düşünüyorum. "Tc_services.USER_ID" nin "tc_users" içinde bulunmadığını bulmaya çalışıyoruz.USER_ID " –

0

İkinci Düzenleme: Gerektiğinde birleştirmeler Hemen

SELECT 
* 
FROM tc_services 
WHERE tc_services.billing_id IS NULL AND 
tc_services.user_id NOT IN (SELECT user_id FROM tc_users) 

No do

Düzenleme: sorunuzu yeniden okuma sonra bir

bu resmi görmek 'SOL JOIN' isteyebilirsiniz: http://i.stack.imgur.com/66zgg.png

Yani sorgu (ler) bakmak bir şey

SELECT 
* 
FROM tc_users u 
LEFT JOIN tc_services s ON a.user_id = s.user_id 
WHERE s.billing_id IS NULL 

gibi hangi olur Fatura kimliğine sahip olmayan kullanıcıların listesini verin.

ve sonra ikinci soru için benzer.

Orjinal Cevap: What is the difference between JOIN and UNION?