Dua jadual ini agak besar dan pernyataan pilihan saya mempunyai lebih banyak nilai daripada yang saya dapat, tetapi saya fikir saya boleh memudahkan data dan pertanyaan ini untuk menjawab soalan saya.
Ini adalah kenyataan pilihan saya:
SELECT invoice.InvoiceNum, Layer, InvoiceItemNum FROM (INVOICE left outer join InvoiceItem item ON item.InvoiceNum = Invoice.InvoiceNum ) ORDER BY invoice.InvoiceNum
Jadi saya ada dua meja. Jadual invois dan jadual InvoiceItem. Mereka disertai oleh lajur InvoiceNum dalam setiap jadual dan menunjukkan lajur InvoiceNum dan Layer
Berikut adalah keputusan pertanyaan ini:
InvoiceNum | Layer | InvoiceItemNum 1 | 10 | 1 1 | 0 | 2 1 | 7 | 3 1 | 0 | 4 2 | 0 | 1 2 | 3 | 2 3 | 0 | 1 3 | 0 | 2 3 | 0 | 3 4 | 0 | 1 4 | 0 | 2 4 | 5 | 3
Memandangkan jadual InvoiceItem saya mempunyai berbilang baris yang boleh diperuntukkan kepada 1 InvoiceNum, ini menghasilkan InvoiceNums pendua dalam hasil saya, yang saya tidak mahu.
Ini adalah hasil yang saya cuba dapatkan, untuk menyenaraikan hanya 1 nombor invois daripada jadual invois, di mana kes pertama ialah nilai bukan sifar daripada lajur lapisan jadual InvoisItem, dan jika tiada nilai bukan sifar , senaraikan sifar A pertama.
Cuba sesuatu seperti ini:
InvoiceNum | Layer | InvoiceItemNum 1 | 10 | 1 2 | 3 | 2 3 | 0 | 1 4 | 5 | 3
Saya hanya tidak pasti bagaimana untuk melakukan ini, atau sama ada ia mungkin memandangkan ia berada di dua meja berbeza.
Andaian/Pemahaman:
sybase
标记,但问题并没有区分 4x 不同的 Sybase RDBMS 产品(ASE
、SQLAnywhere
、IQ
、Advantage
walaupun), jadi saya akan tetap dengan sintaks SQL biasa (iaitu produk 4x mempunyai dialek SQL yang berbeza; juga, ASE tidak menyokong CTE)left (outer) join
的使用,因为提供的输出似乎没有表明InvoiceItem
Layer
和InvoiceItemNum
列属于哪个表,因此我假设它们属于InvoiceItem
yang berkaitan:
Pertanyaan yang menjana output semasa OP:insert
Tidak pasti apakah output yang sepatutnya kerana ia tidak muncul (untuk saya) dan OP telah menunjukkan keperluan-
Semua pertanyaan diuji dalam (Sybase)SAP -
left (外部)join
ASE 16.0
Soalan ini agak rumit:
Cuba dalam Postgres:
Demo
Dalam MySQL 8:
Cuba ini: