2013-09-26 4 views
2

У меня есть два запроса:Можно сделать один запрос из двух запросов?

1) первый я найти все уникальные name и считать каждый уникальный name в Table

2) второй я получаю строки для каждого уникального name

Код:

$sql1 = "SELECT name, count(name) as count 
    FROM (
     SELECT name 
      FROM Table 
      WHERE id_city='333' AND id_firm='444' AND id_service='555' 
    ) x 
    GROUP BY name 
"; 

$res1 = sqlsrv_query($conn, $sql1); 

while ($i = sqlsrv_fetch_array($res1, SQLSRV_FETCH_ASSOC)) 
{ 
    $name = ($i['name'] != '') ? $i['name'] : '0'; 

    $sql2 = "SELECT 
     ta.unit as ta_unit, 
     ta.id_producer_goods as ta_id_producer_goods 
     FROM Table ta 
     WHERE ta.id_city='333' 
      AND ta.id_firm='444' 
      AND ta.id_service='555' 
      AND ta.name='$name'"; 

    $params = array(); 
    $options = array("Scrollable" => SQLSRV_CURSOR_KEYSET); 
    $res12 = sqlsrv_query($conn, $sql12, $params, $options); 
} 

Sql Скрипка со структурой Таблица HERE

Можно сделать один запрос из двух запросов?

+1

структура шоу таблица и желаемый результат .. – Sasidharan

ответ

-1

Вам необходимо использовать два запроса. Так как групповая функция, вызванная в первом запросе, будет возвращать только одну строку. Хотя вам нужно несколько строк в соответствии с пунктом 2 ваших требований.

0

Предполагая, что поля unit и PRODUC_Goods имеют более одной строки для имени, и вы хотите показать их все.

SELECT ta.[Name], 
    (SELECT count([Name]) FROM [Table] tc 
     WHERE tc.[Name] = ta.[Name] 
     AND ta.id_city='333' 
     AND ta.id_firm='444' 
     AND ta.id_service='555' 
    ) as [Name Count], 
    ta.unit as ta_unit, 
    ta.id_producer_goods as ta_id_producer_goods 
    FROM [Table] ta 
    WHERE ta.id_city='333' 
     AND ta.id_firm='444' 
     AND ta.id_service='555' 
    ORDER BY ta.[Name] 
+0

не добро - проверить в SQL скрипки http://sqlfiddle.com/#!3/7f9cf –

+0

Тогда я не понимаю, что вы ищете. Пожалуйста, разместите столбцы и строки, которые вы ожидаете увидеть в окончательных результатах. –

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