SORU
15 Aralık 2008, PAZARTESİ


SQL't yok olan bir tablodaki kayıtları başka bir var bulmak

Aşağıdaki iki SQL tabloları (MySQL) var:

Phone_book
 ---- ------ -------------- 
| id | name | phone_number |
 ---- ------ -------------- 
| 1  | John | 111111111111 |
 ---- ------ -------------- 
| 2  | Jane | 222222222222 |
 ---- ------ -------------- 

Call
 ---- ------ -------------- 
| id | date | phone_number |
 ---- ------ -------------- 
| 1  | 0945 | 111111111111 |
 ---- ------ -------------- 
| 2  | 0950 | 222222222222 |
 ---- ------ -------------- 
| 3  | 1045 | 333333333333 |
 ---- ------ -------------- 

Nasıl Phone_book içinde olmayan insanlar tarafından yapılan öğrenebilirim? İstenen çıktı şöyle olacaktır:

Call
 ---- ------ -------------- 
| id | date | phone_number |
 ---- ------ -------------- 
| 3  | 1045 | 333333333333 |
 ---- ------ -------------- 

Herhangi bir yardım çok mutluluk duyacağız.

CEVAP
15 Aralık 2008, PAZARTESİ


Bunu yapmanın birkaç farklı yolu, değişen verimlilik ile, ne kadar iyi, sorgu doktoru ve iki tablo: göreceli büyüklüğüne bağlı olarak var

Bu kısa açıklama, ve eğer telefon rehberinizi çok kısa ise hızlı olabilir:

SELECT  *
FROM    Call
WHERE   phone_number NOT IN (SELECT phone_number FROM Phone_book)

alternatif olarak (Alterlife sayesinde)

SELECT *
FROM   Call
WHERE  NOT EXISTS
  (SELECT *
   FROM   Phone_book
   WHERE  Phone_book.phone_number = Call.phone_number)

(Kieran sayesinde)

SELECT * 
FROM   Call
LEFT OUTER JOIN Phone_Book
  ON (Call.phone_number = Phone_book.phone_number)
  WHERE Phone_book.phone_number IS NULL

(, Diğerleri dediğim gibi, istediğiniz, normalde en iyi sadece sütunları seçmek için bunu görmezden '*')

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Booredatwork.com

    Booredatwork

    5 Ocak 2009
  • NicoleGrippo

    NicoleGrippo

    14 Kasım 2006
  • Submissions101

    Submissions1

    23 ŞUBAT 2007