USE SPJ;
CREATE TABLE S (SNO CHAR(4) NOT NULL,
SNAME CHAR(20) NOT NULL,
STATUS CHAR(10),
CITY CHAR(20),
PRIMARY KEY (SNO));
CREATE TABLE P (PNO CHAR(4) NOT NULL,
PNAME CHAR(20) NOT NULL,
COLOR CHAR(8),
WEIGHT SMALLINT,
PRIMARY KEY(PNO));
CREATE TABLE J (JNO CHAR(4) NOT NULL,
JNAME CHAR(20),
CITY CHAR(20),
PRIMARY KEY(JNO));
CREATE TABLE SPJ (SNO CHAR(4) NOT NULL,
PNO CHAR(4) NOT NULL,
JNO CHAR(4) NOT NULL,
QTY SMALLINT,
PRIMARY KEY (SNO,PNO,JNO),
CONSTRAINT `spj_ibfk_1` FOREIGN KEY (SNO) REFERENCES S(SNO) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `spj_ibfk_2` FOREIGN KEY (PNO) REFERENCES P(PNO) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `spj_ibfk_3` FOREIGN KEY (JNO) REFERENCES J(JNO) ON DELETE CASCADE ON UPDATE CASCADE);
上面是我構建表的時候寫的代碼
表的內容如下


查詢的題目是------->>>>>找出供應工程J1零件為紅色的供應商號碼SNO
我的查詢代碼是
USE SPJ;
SELECT DISTINCT SNO FROM SPJ
WHERE JNO='J1' AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR='紅');
但是一直都查不到東西,但是如果我用
USE SPJ;
SELECT DISTINCT * FROM SPJ
WHERE JNO = 'J1' AND PNO IN ('P1', 'P4' , 'P6')
就可以成功查詢,請求各位大佬指教
uj5u.com熱心網友回復:
你這個sql server資料庫吧?uj5u.com熱心網友回復:
檢查下資料庫字符集,看是否是GBK或UTF-8,是否不支持中文查詢。uj5u.com熱心網友回復:
COLOR 是 CHAR(8),'紅' 只有2位,有沒有問題?uj5u.com熱心網友回復:
SELECT PNO
FROM P
WHERE COLOR='紅'
你現用這個陳述句查查有沒有資料就知道了。
如果沒有,再查找其他問題。
比如,你用的char定長的,把空格去掉再比較
uj5u.com熱心網友回復:
字串欄位盡量不要用char。varchar2(20 char) 代替uj5u.com熱心網友回復:
嗯嗯!我已經試過了,在使用這個的時候回傳了P1,P4,P6這三個值,和在P表中的相同
然后我就用了
SELECT SNO
FROM SPJ
WHERE JNO = 'J1' AND PNO IN ('P1','P4','P6')
結果是對的,但是唯獨用我原來的就不行
uj5u.com熱心網友回復:
嗯嗯我是設定好UTF-8的~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/81502.html
標籤:基礎和管理
