PDA

View Full Version : تشخیص نتایجی که با select بر نمی گردند



intel_amd
یک شنبه 25 خرداد 1393, 00:52 صبح
سلام دوستان عزیز select * from table where id in(1,2,3,4,5,6,7,8,9)در دستور بالا گفتم تمام ردیف هائی که ستون idishun برابر یکی از اعداد بالاست برگردهحالا نتیجه این دستور یک سری ردیف است که به ترتیب ستون idishun برابر با 1و2و3و... است اما این وسط مثلا وقتی ردیفی که ستون idish برابر با 5 نیست برنگشته ردیفی که ستون idish برابر با 6 بوده بجای ریفی که idish 5 نبوده ظاهر شده و سوال اینجایت که چطور متوجه شم کدوم مقدار برایش ردیفی ظاهر نشدهمثلا اینکه ردیف هائی که ستون idishun برابر این اعداد هست ظاهر شوند و برای ردیف هائی که ستون idishun با عددی برابر نیست بجاش یک ردیف 0 0 0 0 به ازای هر ستونش برگرده

MMSHFE
یک شنبه 25 خرداد 1393, 11:31 صبح
ببینید، با خود MySQL میشه ولی اینقدر درگیر if و... میشین که نه بهینه است و نه به اعصاب خوردیش می ارزه. بهتره با PHP انجام بدین. برای مثال:

$ids = range(1, 9);
$c = count($ids);
$in_ids = implode("','", $ids);
$result = mysql_query("SELECT * FROM `table` WHERE (`id` IN ('{$in_ids}')) ORDER BY `id`");
if($result && mysql_num_rows($result) > 0) {
$i = 1;
echo '<table>' . PHP_EOL;
echo '<tr><th>ID</th><th>Name</th></tr>' . PHP_EOL;
while($row = mysql_fetch_assoc($result)) {
while($row['id'] != $ids[$i] && $i < $c) {
echo '<tr><td>0</td><td>0</td></tr>' . PHP_EOL;
$i++;
}
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '</tr>' . PHP_EOL;
}
mysql_free_result($result);
echo '</table>' . PHP_EOL;
}