DBで指定した値しか存在しないデータを抽出する方法
指定した second_no しか存在しない no を抽出したいのですが、
どのように SQL 文を記述すればよいか分からなかったので、
記述方法についてアドバイスいただける方がいらっしゃいましたら、
ご教示の程、よろしくお願いします。
[test_table]テーブル
―――――――――
id|no|second_no
―――――――――
1 |11|01
2 |11|03
3 |11|05
4 |12|05
5 |13|00
6 |13|05
7 |14|00
8 |14|05
―――――――――
【やりたい事1】
下記のように second_no が 00 と 05 のものを抽出すると、no = 11, 12, 13, 13, 14, 14 が抽出されます。
SELECT *
FROM test_table
WHERE second_no = '00'
OR second_no = '05'
これを no = 13, 14が抽出され、no = 11, 12 は抽出されないようにしたいです
(no = 11 は、second_no に 01 という 00, 05 以外の値が存在する為です。
no = 12 は second_no に 00 が存在しない為です)。
その為、下記の方法で出来ないかと考えました。
1. 全件取得
2. 部分取得
3. 全件取得で獲得した no と部分取得で獲得した no の個数が一致したものが今回取得したいもの。
上記の考え方をソースにしたものは下記となりますが、
この考え方では、no = 12 が抽出されてしまうため、
考え方を変える必要があるのですが、どうすればよいか分かりませんでした。
なお、抽出したい second_no は 00 で抽出したいときもあれば、
00 と 05 で抽出したいときなど複数のパターンがあります。
それと、下記のソースの「データベースユーザ名」「データベースパスワード名」
「データベース名」はそれぞれの環境に合わせる必要があります。
【ソース】
<?php
$link = mysql_connect('localhost', 'データベースユーザ名', 'データベースパスワード名');
mysql_select_db('データベース名', $link);
// 1.全件取得
$query = mysql_query("SELECT * FROM test_table", $link);
while ($row = mysql_fetch_array($query)) {
// echo $row["no"];
// echo "<br>";
}
//echo "<br>";
// 2.部分一致。
$query = mysql_query("SELECT * FROM test_table WHERE second_no = '00' or second_no = '05'", $link);
while ($row = mysql_fetch_array($query)) {
// echo $row["no"];
// echo "<br>";
}
// 3.ここで1と2の結果を参考に、noが13と14を抽出したい。
mysql_close($link);
?>
【やりたい事2】
上記のソースは複数の SQL 文で実現しようとしていますが、
1つの SQL 文でこのような動作を実現する事は出来ないでしょうか?
以上、よろしくお願いします。
お礼
理解できました。 丁寧に教えて下さいましてありがとうございました。