0

2 つのテーブル ノードを取得しました:

nid INT(10)
type (VARCHAR(32))

node_hit_count

nid INT(10)
totalcount (bigint(20))

テーブルにないすべてnidの s をテーブルから選択する必要があり、型はorまたはnodenode_hit_countWHERE nodefeaturehomecompetition

私が試したこと、それは間違っていました、そして私の心は吹き飛ばされそうです:/

select * from node left join node_hit_counter on node.nid=node_hit_counter.nid 

where hit.nid is null and node.type IN ('feature', 'home', 'competition')
4

2 に答える 2

2

句の内容hit.nidは何ですか。代わりに次のようWHEREに使用する必要があります。WHERE node.nid IS NULL

select node.*
from node 
left join node_hit_counter on node.nid = node_hit_counter.nid 
where node.nid is null 
  and node.type IN ('feature', 'home', 'competition');

また:

SELECT *
FROM node
WHERE nid NOT IN(SELECT nid FROM node_hit_counter WHERE nid IS NOT NULL)
  AND type IN ('feature', 'home', 'competition');
于 2012-12-10T14:25:06.843 に答える
1

これを試してみると、hit.nid を where 句で使用できます :o)

select n.* 
from node n
left join node_hit_counter hit on n.nid=hit.nid 
where hit.nid is null 
and n.type IN ('feature', 'home', 'competition')
于 2012-12-10T14:26:42.710 に答える