2014-12-23 3 views
1

У меня есть SQL-запроспреобразования петельного запроса MySQL в одном запрос

$var = 123; 
$sql="SELECT COL1, COL2, COL3 FROM `table1` WHERE `COL1`='$var'"; 

Результатов этого запроса (петельный) используется, чтобы получить счетчик для каждой строки из другой таблицы.

$value = $row['COL2']; 
$var2= mysql_num_rows(mysql_query("SELECT MY_COL FROM `table2` WHERE `column1` ='".$var1."' AND column2 = $value")); 

Я попробовал это объединить два

$sql = "SELECT A.COL1, A.COL2, A.COL3, COUNT(B.MY_COL) FROM `table1` A LEFT JOIN `table2` B ON A.COL2 = B.column2 WHERE A.COL1=$var" 

но результаты неверны. Используется ON A.COL2 = B.column2 правильный? Как объединить эти два запроса в один, чтобы уменьшить количество вызовов в mysql?

В таблице 1 указаны записи, которые могут отсутствовать в таблице 2.

ответ

1

Попробуйте это:

$sql = "SELECT A.COL1, A.COL2, A.COL3, COUNT(B.MY_COL) FROM `table1` A LEFT JOIN `table2` B ON A.COL2 = B.column2 AND A.COL1=$var" 
0
$var2= mysql_num_rows(mysql_query("SELECT MY_COL FROM `table2` WHERE `column1` ='".$var1."' AND column2 
    IN (
    SELECT COL2 FROM `table1` WHERE `COL1`='$var' 
) 
)); 

Использование MySQL ГДЕ В

Примечание: Не используйте mysql_ функции, они являются устаревшими и будут удалены в будущих версиях PHP.

+0

Мне нужны все строки из таблицы1 и их последующий подсчет из таблицы2, только если column2.table2 = COL2.table1 –

+0

Для каждого столбца необходимо использовать разные запросы, так как в подзапросе должен быть возвращен только один столбец. – Pupil

Смежные вопросы