sorgusu hariç tutulduğu için, verileri bire-çok tablo ilişkisinden çekmekte güçlük çekiyorum. Henüz "Yankı" garanti koduna sahip olmayan bir ekipman sözleşmesi listesi almam gerekiyor. Senaryomda bir ekipman sözleşmeleri ve garanti tablosu var.Bir Çoktan Sorgulama
ekipman-sözleşmeler masaya (EQC bundan sonra) tasarımıdır:
------------------------------------------------------------------------------------
| EquipmentID | Contract | SerialNumber | Make | Model | Date | Customer |
------------------------------------------------------------------------------------
| 001 | A1 | GDS12 | GRND | GR219 | 2016-03-02 | Acme Corp|
| 002 | B1 | BQWSD | BQW | BLU22 | 2016-03-10 | Fast Lawn|
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 004 | D1 | Foo37 | Foo | Red18 | 2016-03-04 | Perfect T|
| 005 | E1 | Foo38 | Foo | Red18 | 2016-03-01 | Perfect T|
------------------------------------------------------------------------------------
garanti masanın (WAR bundan sonra) tasarımı olan: Yapmam gereken şey
---------------------------------------------------
| SerialNum | Make | WarrantyCode | Warranty Date|
---------------------------------------------------
| GDS12 | GRND | Alpha | 2016-04-01 |
| GDS12 | GRND | Bravo | 2016-04-01 |
| GDS12 | GRND | Delta | 2016-04-01 |
| GDS12 | GRND | Charlie | 2016-04-01 |
| GDS12 | GRND | Echo | 2016-04-01 |
| BQWSD | BQW | Alpha | 2016-04-01 |
| BQWSD | BQW | Bravo | 2016-04-01 |
| BQWSD | BQW | Charlie | 2016-04-01 |
| BQWSD | BQW | Foxtrot | 2016-04-01 |
| BQWSD | BQW | Echo | 2016-04-01 |
| Foo36 | Foo | Alpha | 2016-04-01 |
| Foo36 | Foo | Bravo | 2016-04-01 |
| Foo36 | Foo | Charlie | 2016-04-01 |
| Foo36 | Foo | Hotel | 2016-04-01 |
---------------------------------------------------
toplarlamanızdır Henüz "Echo" garanti koduna sahip olmayan EQC'lerin bir listesi. Bunun anlamı, ya Echo kaydına sahip olmadıkları ya da henüz garanti kayıt süresinin bulunmadığı anlamına gelir.
Benim sonuç kümesi gibi görünmelidir: (. Onlar Echo WarrantyCode uygulanan çünkü GDS12 & BQWSD exclueded edilir)
------------------------------------------------------------------------------------
| EquipmentID | Contract | SerialNumber | Make | Model | Date | Customer |
------------------------------------------------------------------------------------
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 004 | D1 | Foo37 | Foo | Red18 | 2016-03-04 | Perfect T|
| 005 | E1 | Foo38 | Foo | Red18 | 2016-03-01 | Perfect T|
------------------------------------------------------------------------------------
Benim sorgu:
SELECT EQC.EquipmentID
,EQC.Contract
,EQC.SerialNumber
,EQC.Make
,EQC.Model
,EQC.DATE
,EQC.Customer
FROM equipment - contracts EQC
LEFT JOIN warranty WAR
ON WAR.SerialNum = EQC.SerialNumber
AND WAR.Make = EQC.Make
WHERE WAR.WarrantyCode is null
OR WAR.WarrantyCode <> 'Echo'
Sonuç kümesi bunun yerine şöyle görünür:
------------------------------------------------------------------------------------
| EquipmentID | Contract | SerialNumber | Make | Model | Date | Customer |
------------------------------------------------------------------------------------
| 001 | A1 | GDS12 | GRND | GR219 | 2016-03-02 | Acme Corp|
| 001 | A1 | GDS12 | GRND | GR219 | 2016-03-02 | Acme Corp|
| 001 | A1 | GDS12 | GRND | GR219 | 2016-03-02 | Acme Corp|
| 001 | A1 | GDS12 | GRND | GR219 | 2016-03-02 | Acme Corp|
| 002 | B1 | BQWSD | BQW | BLU22 | 2016-03-10 | Fast Lawn|
| 002 | B1 | BQWSD | BQW | BLU22 | 2016-03-10 | Fast Lawn|
| 002 | B1 | BQWSD | BQW | BLU22 | 2016-03-10 | Fast Lawn|
| 002 | B1 | BQWSD | BQW | BLU22 | 2016-03-10 | Fast Lawn|
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 003 | C1 | Foo36 | Foo | Red18 | 2016-03-04 | Perfect T|
| 004 | D1 | Foo37 | Foo | Red18 | 2016-03-04 | Perfect T|
| 005 | E1 | Foo38 | Foo | Red18 | 2016-03-01 | Perfect T|
------------------------------------------------------------------------------------
Bu sorunun sadece bir kısmını yanıtlamanızın yanı sıra, tarihe de dahil olmak zorundasınız. OP, "ya Echo kaydına sahip değiller ya da henüz garanti kayıt süresine sahip değillerdi" diye sordu. – twoleggedhorse
@twoleggedhorse: Ben öyle düşünmüyorum. Ya bir Echo garanti kaydı var ya da yok. Yoksa garanti tablosunda gelecekteki tarihleri beklemek zorunda mıyız? Öyleyse, evet, bugün ile bir tarih karşılaştırması eklemek zorunda kalacağız. –
Çok açık değil biliyorum, ama bence, gelecekte – twoleggedhorse