私はこの単純なコードの平和に頭を悩ませています。それは機能したくありません、そして私は他の解決策を考えることができません...
それを機能させるのを手伝っていただけませんか?
SELECT chart FROM chart WHERE (select count(user_id) FROM users join charts ON
user_id=charts.UID and charts.chart=chart WHERE INET_NTOA(user_ip)='127.0.0.1')=0;
次の列に関連する3つのテーブルがあります。
chart(
chart int(5)
);
charts(
UID int(11),
chart int(5)
);
`users` (
`user_id` int(11),
`user_ip` int(10)
);
重要なのは、最初の選択からの「chart」列をサブクエリに渡してcharts.chart = chartに渡す必要があるということですが、代わりにサブクエリはそれ自体と比較されます。つまり、chart=chart-常にtrueです。
私はそれがそのように機能しないことを知っています...しかし、私は他の方法を本当に考えることができません。私がやろうとしていることへの道はありますか?
編集1:基本的に私は逆の選択が必要です:
select chart.chart from chart join charts on chart.chart=charts.chart join users
on user_id=charts.UID and INET_NTOA(user_ip)='127.0.0.1';
このクエリは、指定されたIPでユーザーによってタグ付けされたグラフを返します(例:1、4、5、9)。ただし、代わりにタグ付けされていないグラフ、つまり2、3、6、7、8、10を選択する必要があります。等々...
編集2:私は今、ある種のネガティブな結合を探しています。これでいいと思いますが、使い方がわかりません。その間、いくつかの研究をしています...