非常簡單。這個聲明有什麼問題。Oracle SQL選擇列等於多個值
SELECT DISTINCT CUST_FNAME "FIRST NAME", CUST_LNAME "LAST NAME", POS_TIME "TIME", POS_DATE "DATE" FROM POS, CUSTOMER
WHERE CUST_NUM = POS_CUST_NUM AND POS_ITEMID = 1 AND POS_ITEMID = 2;
非常簡單。這個聲明有什麼問題。Oracle SQL選擇列等於多個值
SELECT DISTINCT CUST_FNAME "FIRST NAME", CUST_LNAME "LAST NAME", POS_TIME "TIME", POS_DATE "DATE" FROM POS, CUSTOMER
WHERE CUST_NUM = POS_CUST_NUM AND POS_ITEMID = 1 AND POS_ITEMID = 2;
我想你可能想誰是這兩個項目1和2。在這種情況下,你可以使用相關的客戶如下:
select x.*, pos_time, pos_date
from (SELECT CUST_NUM, CUST_FNAME, CUST_LNAME
FROM POS
join CUSTOMER
on CUST_NUM = POS_CUST_NUM
where POS_ITEMID = 1
intersect
SELECT CUST_NUM, CUST_FNAME, CUST_LNAME
FROM POS
join CUSTOMER
on CUST_NUM = POS_CUST_NUM
where POS_ITEMID = 2) x
join pos
on x.cust_num = pos.pos_cust_num
where pos_itemid in (1, 2)
是的,我試過,但它不返回我想要的,它返回類似於OR – Snoopy101x
@ Snoopy101x您是否嘗試過上述的相交查詢? –
@ Snoopy101x上面的交叉查詢與您的原始查詢非常不同,這不是我添加的唯一部分。 –
它必須是OR ...列不能有兩次相同的值。
SELECT DISTINCT CUST_FNAME 「名」,CUST_LNAME 「姓」,POS_TIME 「TIME」,POS_DATE 「DATE」 FROM POS,CUSTOMER WHERE CUST_NUM = POS_CUST_NUM AND(POS_ITEMID = 1 OR POS_ITEMID = 2) ;
我在查詢中添加了圓括號。我希望這有幫助。
編輯:或者像Brian DeMilia說,在他的評論中,POS_ITEMID使用(1,2)
我試過POS_ITEMID =(1,2),但出現錯誤「此操作員必須跟隨任何或全部」 我是當客戶購買了第1項和第2項時,試圖讓它到達它選擇的位置,只是不確定語法。 – Snoopy101x
@ Snoopy101x他打算說IN,但這不是你想要的,因爲它會顯示有或者不一定是兩者的顧客。請參閱下面的答案。 –
我的解決方案不適合您的要求。抱歉! – Christian
不確定,但這可能會比上面Brian做的相交更有效一些。另外,我現在無法訪問數據庫,所以我的語法可能會稍微偏離。
select CUST_NUM, CUST_FNAME, CUST_LNAME, pos_time, pos_date
from CUSTOMER c1,POS p1
where c1.cust_num = p1.pos_cust_num
and p1.pos_itemid=1
and exists (select 'x' from
pos p2
where p2.pos_cust_num=p1.pos_cust_num
and p2.pos_itemid=2)
基本上,給我大家在有序爲itemid 1和其中存在的記錄,其中責令同一客戶爲itemid 2.
你得到一個語法錯誤或沒有得到你想要的結果? –
POS_ITEMID = 1 AND POS_ITEMID = 2將始終評估爲false。 –
單個字段不能是2個事物。你的意思是說你想要這個領域,當它是或者?在這種情況下,你會在(1,2) –