PDA

View Full Version : سوال: نیاز به دو query تو در تو



miladanimator
پنج شنبه 10 دی 1388, 22:44 عصر
با سلام

من در دیتابیس 2 تا جدول دارم . table1 , table2

حالا یک کوئری مثل زیر دارم و می خوام مقادیر تکراری دو جدول رو پیدا کنم . اما کد زیر عمل نمی کنه .




<?php
$queryzz="select * from table1 order by id";
$resultzz=mysql_db_query($dbname,$queryzz,$RSconn) or die(mysql_error());
$i=0;
while($RS=mysql_fetch_array($resultzz)){
$i++;
$esm=$RS["esm"];

echo "<tr><td>";
echo $i." - ".$esm;

$query = "select * from table2 where esm='$esm'";
$result = mysql_db_query( $dbname, $query, $RSconn );
$num = mysql_num_rows( $result );
$RS = mysql_fetch_array( $result );
if ($num > 0)
{
echo "tekrari";
}
echo "</td></tr>";
}?>



دوستان می تونن راهنمایی کنن ؟ که مشکل کد بالا برطرف بشه یا کد صحیح برای اینکار رو بنویسن ؟؟

ممنون

f_naderi
پنج شنبه 10 دی 1388, 23:14 عصر
سلام توي صفحه هيچي نمي نويسه؟

onlymaj
پنج شنبه 10 دی 1388, 23:22 عصر
سلام دوست عزیز.
فکر کنم بتونی با دستورات mysql این کار رو ساده تر انجام بدی
مثلا یک راه سادش اینه که دو تا query خودت رو یکی کنی مثل اینجا :

select a.esm,b.your_filed_name FROM table1 a,table2 b where b.esm = a.esm GROUP BY b.esm
البنه روشهای دیگه ای ام هست که با یکم جستجو حتما به جواب می رسی

f_naderi
پنج شنبه 10 دی 1388, 23:38 عصر
من به اين صورت نوشتم جواب داد.

<?php
$c=mysql_connect("127.0.0.1","root","");
$link=mysql_select_db("mydb1",$c);
$queryzz="select * from tabel2";
$resultzz=mysql_query($queryzz);
$i=0;
while($RS=mysql_fetch_array($resultzz)){
$i++;
$esm=$RS["coderesh"];

echo "<tr><td>";
echo $i." - ".$esm;

$query = "select * from tabel1 where coderesh='$esm'";
$result = mysql_query($query);
$num = mysql_num_rows( $result );
if ($num > 0)
{
echo "tekrari";
}
echo "</td></tr>";
}?>
براي نمايش تكراري بودن فكر كنم كه بهتره بنويسي $num>1

miladanimator
جمعه 11 دی 1388, 00:04 صبح
سلام توي صفحه هيچي نمي نويسه؟

توی صفحه اطلاعات کوئری اول نمایش داده میشه . اما موارد تکراری مشخص نمیشه .

miladanimator
جمعه 11 دی 1388, 00:05 صبح
من به اين صورت نوشتم جواب داد.

<?php
$c=mysql_connect("127.0.0.1","root","");
$link=mysql_select_db("mydb1",$c);
$queryzz="select * from tabel2";
$resultzz=mysql_query($queryzz);
$i=0;
while($RS=mysql_fetch_array($resultzz)){
$i++;
$esm=$RS["coderesh"];

echo "<tr><td>";
echo $i." - ".$esm;

$query = "select * from tabel1 where coderesh='$esm'";
$result = mysql_query($query);
$num = mysql_num_rows( $result );
if ($num > 0)
{
echo "tekrari";
}
echo "</td></tr>";
}?>
براي نمايش تكراري بودن فكر كنم كه بهتره بنويسي $num>1


متاسفانه این کد هم مثل کد خودم اطلاعات ک.ئری اول رو نمایش میده اما اطلاعات تکراری مشخص نمیشه . چند تا اطلاعات تکراری در دیتابیس وارد کنید متوجه میشد.

f_naderi
جمعه 11 دی 1388, 00:33 صبح
<?php
$c=mysql_connect("127.0.0.1","root","");
$link=mysql_select_db("mydb1",$c);
$queryzz="select * from tabel2";
$resultzz=mysql_query($queryzz);
$i=0;
echo '<table>';
while($RS=mysql_fetch_array($resultzz)){
$i++;
$esm=$RS["coderesh"];

echo "<tr><td>";
echo $i." - ".$esm;

$query = "select * from tabel1 where coderesh='$esm'";
$result = mysql_query($query);
$num = mysql_num_rows( $result );
if ($num > 0)
{
echo "tekrari";
}
echo "</td></tr>";
}
echo '<table>';

?>
با اين كد اين خروجي رو به من داد و داده ي تكراري وارد جدول 1كردم.
1 - 1tekrari
2 - 2tekrari
3 - 3tekrari

miladanimator
جمعه 11 دی 1388, 00:42 صبح
با تشکر فراوان از هر دو دوست عزیز .

مشکل حل شد . کد هر دوی شما عزیزان جواب داد .

با عرض معذرت - مشکل از اطلاعات دیتابیسم بود . اطلاعات رو با استفاده از php از یک فایل text گرفته بودم وارد db کرده بودم . و یک فاصله space در داده ها اضافه شده بود .

واثعا ممنونم از راهنماییتون

hidensoft
جمعه 11 دی 1388, 20:19 عصر
مشکلت که حل شد اما یه سری هم به منوال مای اس کیو ال بزن درباره UNIQU و INDEX و JOIN یکم تحقیق کن احساس می کنم در این زمینه یه کم ضعف داری

موفق باشی