我們在查詢後返回了cardID
的列表,這些cardID
屬於兩個表Student
和Personnel
。那麼我怎樣才能加入那些cardID
的Student
和Personnel
,所以我可以根據cardID
的返回一個表格顯示名稱Student
和Personnel
?從sql中的兩個單獨表中加入邏輯
人員表:
PERSONNELID NUMBER(9,0)
PERSONNELNAME VARCHAR2(20)
PERSONNELSURNAME VARCHAR2(20)
PERSONNELJOB VARCHAR2(40)
PERSONNELCARDID NUMBER(4,0)
學生表:
STUDENTID NUMBER(9,0)
STUDENTNAME VARCHAR2(20)
STUDENTSURNAME VARCHAR2(20)
STUDENTDEPT VARCHAR2(40)
STUDENTFACULTY VARCHAR2(20)
STUDENTCARDID NUMBER(4,0)
CardId中表
CARDID NUMBER(4,0)
USERTYPE VARCHAR2(20)
CHARGE NUMBER(3,2)
CREDIT NUMBER(4,2)
PaymentDevice表:
ORDERNO NUMBER
PAYDEVIP NUMBER(8,0)
PAYDEVDATE DATE No
PAYDEVTIME VARCHAR2(8)
CHARGEDCARDID NUMBER(9,0)
MEALTYPE VARCHAR2(10)
我試圖返回第一個10人的姓名是吃食堂上27/12/2012
SELECT C.CARDID
FROM CARD C, PAYMENTDEVICE P
WHERE P.ORDERNO
BETWEEN (SELECT MIN(ORDERNO)
FROM PAYMENTDEVICE
WHERE PAYDEVDATE='27/12/2012') AND (SELECT MIN(ORDERNO)
FROM PAYMENTDEVICE
WHERE PAYDEVDATE='27/12/2012')+10 AND C.CARDID=P.CHARGEDCARDID;
我們orderNo
沒有被複位,但每天不斷增加等等我們在當天發現了最小orderNo
,並在此值上加10,以找到那個訂單號之間當天吃的前10個人。
那麼從該查詢返回:
CARDID
1005
1000
1002
1003
1009
2000
2001
1007
2002
1004
1006
和那些其中的一些CardId中的(從1開始)是studentCardId
,其中一些(始於2)PersonnelCardId
。那麼,我該如何匹配和寫出相應的名字呢?
...你可能應該有一個'個人'表,'id','name','surname'和'cardId'。然後使用'individualId','dept','faculty'將你現有的表格修改爲'Personnel',它具有'individualId','job'和'Student'。更乾淨。我的意思是,如果一個學生也是「人員」,會發生什麼?他們會得到第二張卡片嗎?你會期待他們在你的房源上出現兩次嗎?這將是'首選'重複? –
我們不能根據他們的cardIds從不同的表中找到名字嗎? –
也許你可以包括樣本起始數據和你想要的結果? –