2015-06-16 3 views
1

По идее, что join лучше, чем вложенные запросы, я преобразовал все свои вложенные запросы в join. Однако при преобразовании в join я не могу получить данные в моем массиве из результата SQL.PHP/MYSQL - извлечение данных

Вот мои запросы:

Без присоединиться

$a="SELECT F_DATE, COUNT(F_DATE) as COUNT_F 
    from FWH 
    where FI_NAME IN 
    ( 
     SELECT I_NAME from INS_W WHERE INSTANCE_ID IN 
     (
     SELECT I_MAP_ID FROM T_MAP where T_MAP_ID = 
     (
      SELECT T_ID FROM TWY WHERE T_NAME = 'abc' 
     ) 
     ) 
    ) 
    AND F_DATE between '$S_D' AND '$E_D' 
    GROUP BY F_DATE"; 

С присоединиться

$a="SELECT t1.F_DATE AS DATE_F, COUNT(t1.F_DATE) as COUNT_F 
    from FWH t1 
    JOIN INS_W t2 ON(t1.FI_NAME = t2.I_NAME) 
    JOIN T_MAP t3 ON(t2.INSTANCE_ID = t3.I_MAP_ID) 
    JOIN TWY t4 ON(t3.T_MAP_ID = t4.T_ID) 
    WHERE t4.T_NAME = 'abc' AND 
    t1.F_DATE BETWEEN '$S_D' AND 'E_D'GROUP BY t1.F_DATE"; 

Вот PHP код для извлечения данных

$link = mysql_connect("ip", "user", "passs"); 
$dbcheck = mysql_select_db("db"); 
if ($dbcheck) { 
    $chart_array_1[] = "['F DATE','F COUNT']"; 
    $result = mysql_query($a); 
    if (mysql_num_rows($result) > 0) { 
     while ($row = mysql_fetch_assoc($result)) { 
      $f_date=$row["DATE_F"]; 
      $f_count=$row["COUNT_F"]; 
      $chart_array_1[]="['".$f_date."',".$f_count."]"; 
     } 
    } 
} 
mysqli_close($link); 

SQL-запросы сами выполняются нормально при тестировании непосредственно в базе данных MySQL.

+0

Могу ли я иметь структуру таблицы – Ramki

+0

я Recommand использовать PDO вместо mysql_connect http://stackoverflow.com/questions/1402017/php-pdo-vs-normal-mysql-connect –

+0

Здравствуйте Все - Спасибо за руководство. PDO тоже не помогает. Вместо этого я вернусь к использованию вложенных запросов. Еще раз спасибо. – User12345

ответ

0

По какой-то причине, когда я использую объединения, я вынужден использовать строку [0], строку [1] и т. Д. Вместо того, чтобы извлекать значения, используя имя столбца. Я не понимаю причины этого. Однако это единственный выход в моем случае. Код ниже для тех, кто может застрять в подобной ситуации, как я.

$link = mysql_connect("ip", "user", "passs"); 
$dbcheck = mysql_select_db("db"); 
if ($dbcheck) { 
    $chart_array_1[] = "['F DATE','F COUNT']"; 
    $result = mysql_query($a); 
    if (mysql_num_rows($result) > 0) { 
     while ($row = mysql_fetch_assoc($result)) { 
      $chart_array_1[]="['".$row[0]."',".$row[1]."]"; 
     } 
    } 
} 
mysqli_close($link); 
Смежные вопросы