-1

私は SQL が初めてで、なぜこのクエリが結果を返さないのか理解できませんが、OR 条件を間違って使用しているためだとわかっています。もしも

誰かがこれについて正しい方法を示してもらえますか?

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo  
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL'  
AND exch.name = 'AMEX'  
OR exch.name = 'CBOE'  
OR exch.name = 'ISE'  
OR exch.name = 'PHLX'  
ORDER BY trddata.id 
LIMIT 100;
4

3 に答える 3

7

括弧が必要なようです:

AND (exch.name = 'AMEX'  
OR exch.name = 'CBOE'  
OR exch.name = 'ISE'  
OR exch.name = 'PHLX')

IN も使用できます。

AND exch.name IN ('AMEX','CBOE','ISE','PHLX')
于 2013-06-21T14:30:14.263 に答える
6

() を使用する必要があると思いますたとえば

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo  
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL'  
AND (exch.name = 'AMEX'  
OR exch.name = 'CBOE'  
OR exch.name = 'ISE'  
OR exch.name = 'PHLX')
ORDER BY trddata.id 
LIMIT 100;
于 2013-06-21T14:30:17.490 に答える
1

このクエリを試して、それが OR 条件によるものかどうかを確認してください。

SELECT trddata.id, trddata.ts, instr.name, instr.underlying, instr.expiration,instr.strike, instr.callput,opnint.vol, trdind.name ind,exch.name exch, trddata.price,trddata.bidprcbbo,trddata.askprcbbo  
FROM trdopt trddata 
JOIN instropt instr 
ON trddata.optid = instr.id 
JOIN trdindopt trdind 
ON trdind.id = trddata.ind 
JOIN exchopt exch 
ON trddata.exchcode = exch.id 
JOIN opnintopt opnint 
ON opnint.optid = trddata.optid 
WHERE opnint.ds = DATE_FORMAT(trddata.ts, '%Y-%m-%d') 
AND trddata.id >= 71125752 
AND trddata.ts <= '2013-06-20 16:30:36' 
AND instr.underlying = 'AAPL'  
AND exch.name in ('AMEX' , 'CBOE', 'ISE','PHLX')
ORDER BY trddata.id 
LIMIT 100;
于 2013-06-21T14:36:56.527 に答える