select - mysql پیچیده

PHP_Empire

Member
سلام دوستان
فرض کنین دو تا table داریم که یکی بزرگتر و یکی کوچکتره . تو table بزرگتر کل بازیکن های یه تیم فوتبال هستند .
توی table کوچکتر هم لیست هر بازیکنی که کارد زرد گرفته هست.
چه جوری میتونیم لیست بازیکن ها ی که کارت زرد ندارن رو نشون بدیم. لطفا کد بنویسین واسم . من تا اینجا پیش رفتم . که اول کل بازیکن های که کارت زرد دارن رو ریختم تو یه آرایه بعد implode کردمش . الان نمی دونم where رو برای table بزرگه چه جوری بنویسم که بتونه بخونه . جدا کننده implode هم ویرگول گذاشتم. ضمنا هر بازیکن یه کد داره که با اون شناسایی میشه و منحصر به فرده و تویه هر دو تا table یکیه .
PHP Code:
PHP:
<?php

    include "config.php";
$query = "select code from kartzard ";
$result= mysql_db_query($dbname , $query , $link);
while ($row = mysql_fetch_array ($result)){
$rowzard[]=$row[code];

}    

$hazf = implode(",",$rowzard);

$query = "select * from bazikon where code='$hazf'";
$result= mysql_db_query($dbname , $query , $link);
while ($row = mysql_fetch_array ($result)){

 print"

$row[code];
";
}

?>
می دونم کدم اشتباست اما تا اینجا نوشتم که راحت تر راهنمایم کنین .ممنوووووون
 

PHP_Empire

Member
table بزرگ مربوط به اسامی و مشخصات کل بازیکن ها
PHP:
CREATE TABLE `bazikon` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `code` varchar(100) collate latin1_general_ci default NULL,
  `name` varchar(150) collate latin1_general_ci default NULL,
  `ghad` varchar(150) collate latin1_general_ci default NULL,
  `vazn` varchar(200) collate latin1_general_ci default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=20 ;
table کوچک مربوط به بازیکنان کارت زرد گرفته :
PHP:
CREATE TABLE `kartzard` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `code` varchar(100) collate latin1_general_ci default NULL,

  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=15 ;

در اینجا code یه کد منحصر به فرد برای هر بازیکنه که تویه دو تا table یکیه . امید جان ممنون
 

oxygenws

Active Member
اول اینکه تو جدول دوم بهتره از id بازیکن استفاده کنی به جای کد اش...
دوم اینکه code رو در هر دو تا جدول، اینتدکس بذار روش...
سوم، در مورد سوالت...

کد:
SELECT DISTINCT id FROM bazikon
WHERE NOT EXISTS (SELECT * FROM kartzard
   WHERE kartzard.code = bazikon.code)

خوش باشی.
 

PHP_Empire

Member
آقای امید جان . خیلی خیلی ممنون :oops: درست شد . :)
این همون left join اما به روش قدیمی آره ؟
 

جدیدترین ارسال ها

بالا