2014-11-23 70 views
0

我有一个表schedules其中包含sched_id, sc_id1, sc_id2, sc_id3, sc_id4, sc_id5, sc_id6, sc_id7, sc_id8, sc_id9, sc_id10, sched_name使用不同值循环查询

我也曾经有sc_id, sl_id, schoolyear, semister, etc...sc_id1 - scid10subject_current是一个“外键”表的sc_idsubject_current

另外,我有一个表subject_listsl_id, subject_code, subject_description, subject_prereq。来自表subject_currentsl_id是来自sl_idtablesubject_list的“外键”。

现在,我想要做的是“回声”的subject_description从表subject_list只给我的sc_id1 - sc_id10从表schedules值。

此代码不起作用:

for($jaa = 1;$jaa < 11;$jaa++){ 
    $s_scid = "s_scid".$jaa; 
    $s_sublist = mysql_query("SELECT * FROM subject_current WHERE sc_id='$s_scid'"); 
    while($rows_ss = mysql_fetch_assoc($s_sublist)){ 
     $ss_slid = $rows_ss['sl_id']; 

     $ssl_sublist = mysql_query("SELECT * FROM subject_list WHERE sl_id='$ss_slid'"); 
     while($rows_ssl = mysql_fetch_assoc($ssl_sublist)){ 
      $ssl_slid = $rows_ssl['sl_id']; 
      $ssl_subdesc = $rows_ssl['subject_description']; 
     } 
    } 
    echo $ssl_subdesc; 
} 

编辑

这是我想究竟发生:

$s_scid1 = $rows_s['sc_id1']; // which is a value of 1 
$s_scid2 = $rows_s['sc_id2']; // which is a value of 2 

$s_sublist = mysql_query("SELECT * FROM subject_current WHERE sc_id='$s_scid1'"); 
while($rows_ss = mysql_fetch_assoc($s_sublist)){ 
    $ss_slid1 = $rows_ss['sl_id']; 

    $ssl_sublist = mysql_query("SELECT * FROM subject_list WHERE sl_id='$ss_slid1'"); 
    while($rows_ssl = mysql_fetch_assoc($ssl_sublist)){ 
     $ssl_slid1 = $rows_ssl['sl_id']; 
     $ssl_subdesc1 = $rows_ssl['subject_description']; 
     echo $ssl_subdesc1; 
    } 
} 
$s_sublist2 = mysql_query("SELECT * FROM subject_current WHERE sc_id='$s_scid2'"); 
while($rows_ss2 = mysql_fetch_assoc($s_sublist2)){ 
    $ss_slid2 = $rows_ss2['sl_id']; 

    $ssl_sublist2 = mysql_query("SELECT * FROM subject_list WHERE sl_id='$ss_slid2'"); 
    while($rows_ssl2 = mysql_fetch_assoc($ssl_sublist2)){ 
     $ssl_slid2 = $rows_ssl2['sl_id']; 
     $ssl_subdesc2 = $rows_ssl2['subject_description']; 
     echo $ssl_subdesc2; 
    } 
} 

这是一个痛苦写10倍。所以我想循环它。但有人告诉我这很糟糕,并告诉我关于INNER JOIN。但我怎么能用INNER JOIN

+0

你为什么不使用内部连接和获取的,而不是调用查询多次的记录? – SMA 2014-11-23 09:57:31

+0

你的意思是“代码不起作用”?你会得到一个错误或意想不到的结果?请更具体。 – Ashalynd 2014-11-23 09:57:32

+0

另外,这条线的含义是什么?对我来说看起来很奇怪。 '$ s_scid =“$”。“s_scid”。$ jaa;' – Ashalynd 2014-11-23 09:59:27

回答

0

你描述它的样子,你应该这样做:

for($jaa = 1;$jaa < 11;$jaa++){ 
    $s_scid = "s_scid".$jaa; 
    $the_query = "SELECT sl_id, subject_description FROM subject_list sl JOIN subject_current sc ON sl.sl_id=sc.$s_scid"; 
    /* the above should generate a JOIN with a particular element from your master table */ 
    $ssl_sublist = mysql_query($the_query); 
    while($rows_ssl = mysql_fetch_assoc($ssl_sublist)){ 
     $ssl_slid = $rows_ssl['sl_id']; 
     $ssl_subdesc = $rows_ssl['subject_description']; 
     echo $ssl_subdesc; 
    } 
}