За последние 24 часа нас посетили 15828 программистов и 1666 роботов. Сейчас ищут 906 программистов ...

Вложенные запросы

Тема в разделе "Прочие вопросы по PHP", создана пользователем rvb, 25 июн 2014.

  1. rvb

    rvb Новичок

    С нами с:
    25 июн 2014
    Сообщения:
    1
    Симпатии:
    0
    Небходимо вывести категории и в каждой категории список товара. Вот мой код:
    Код (Text):
    1. $query = "SELECT t.name,c.term_taxonomy_id,c.parent   FROM  wp_terms t, wp_term_taxonomy c WHERE t.term_id=c.term_id   AND c.taxonomy='category' ORDER BY  `t`.`name` ASC    "; // Отбор списка категорий name
    2. $res = mysql_query($query);
    3. while($row = mysql_fetch_array($res))
    4. {
    5. $term_taxonomy_id=$row['term_taxonomy_id'];
    6. $name_razdel=$row['name'];
    7. echo "<br><br>Раздел: $name_razdel<br>";
    8.  
    9.  
    10. ?>
    11. <table width="100%" border="1">
    12.   <tr>
    13.     <td width="10%">№ п/п</td>
    14.     <td width="70%">Наименование товара </td>
    15.     <td width="20%">Цена</td>
    16.   </tr>
    17.  
    18.  
    19. <?
    20.  
    21.  
    22. $query1="CREATE TEMPORARY TABLE wp_postmeta_temp AS (
    23.     SELECT *
    24.     FROM wp_postmeta);
    25.  
    26. SELECT post_title,c.meta_value ,d.meta_value
    27. FROM  `wp_term_relationships` a, wp_posts b, wp_postmeta c, wp_postmeta_temp d
    28. WHERE a.object_id = b.id
    29. AND (
    30. a.object_id = c.post_id
    31. AND c.meta_key =  'cost_1'
    32. )
    33. AND (
    34. a.object_id = d.post_id
    35. AND d.meta_key =  'pic'
    36. )
    37. AND a.term_taxonomy_id =".$term_taxonomy_id."
    38.  
    39. ORDER BY  `b`.`post_title` ASC "; // Отбор содержимого категории
    40. echo $query1;  
    41. $res1 = mysql_query($query1);
    42. while($row1 = mysql_fetch_assoc($res1))
    43. {
    44.     $post_title = $row1['post_title'];
    45.     $cost_1=$row1['c.meta_value'];
    46.     $pic=$row1['c.meta_value'];
    47. echo $post_title ;
    48. ?> 
    49.   <tr>
    50.     <td>  </td>
    51.     <td><? echo $post_title;?></td>
    52.     <td><? echo $cost_1; ?></td>
    53.   </tr>
    54. <? 
    55.    
    56.  }
    57.  ?></table><?
    58. }
    В результате категории выводятся, а содержимое категорий пустое:
    [​IMG]
    хотя если запрос запустить в PHPMySQL, содержимое категорий выводится:
    [​IMG]
    Что мне поправить в коде, чтобы выводилось содержимое категорий

    Добавлено спустя 37 минут 18 секунд:
    Разобрался, все заработало
    Код (Text):
    1. $query = "SELECT t.name,c.term_taxonomy_id,c.parent   FROM  wp_terms t, wp_term_taxonomy c WHERE t.term_id=c.term_id   AND c.taxonomy='category' ORDER BY  `t`.`name` ASC    "; // Отбор списка категорий name
    2. $res = mysql_query($query);
    3.  
    4.  
    5.  
    6. while($row = mysql_fetch_array($res))
    7. {
    8. $term_taxonomy_id=$row['term_taxonomy_id'];
    9. $name_razdel=$row['name'];
    10. echo "<br><br>Раздел: $name_razdel<br>";
    11.  
    12.  
    13. ?>
    14. <table width="100%" border="1">
    15.   <tr>
    16.     <td width="10%">№ п/п</td>
    17.     <td width="70%">Наименование товара </td>
    18.     <td width="20%">Цена</td>
    19.   </tr>
    20.  
    21.  
    22. <?
    23.  
    24.  
    25. $query1="CREATE TEMPORARY TABLE wp_postmeta_temp AS (
    26.     SELECT *
    27.     FROM wp_postmeta)";
    28.  
    29. $query2="SELECT post_title,c.meta_value as cost_1 ,d.meta_value as pic
    30. FROM  wp_term_relationships a, wp_posts b, wp_postmeta c, wp_postmeta_temp d
    31. WHERE a.object_id = b.id
    32. AND (
    33. a.object_id = c.post_id
    34. AND c.meta_key =  'cost_1'
    35. )
    36. AND (
    37. a.object_id = d.post_id
    38. AND d.meta_key =  'pic'
    39. )
    40. AND a.term_taxonomy_id =".$term_taxonomy_id."
    41.  
    42. ORDER BY  `b`.`post_title` ASC "; // Отбор содержимого категории
    43.    
    44. $res1 = mysql_query($query1);
    45. $res2 = mysql_query($query2);
    46.  
    47. echo "<br>Ошибка MYSQL: ".mysql_error()."<br>";
    48. while($row2 = mysql_fetch_array($res2))
    49. {
    50.     $post_title = $row2['post_title'];
    51.     $cost_1=$row2['cost_1'];
    52.     $pic=$row2['pic'];
    53.  
    54. ?> 
    55.   <tr>
    56.     <td><? echo $pic; ?>  </td>
    57.     <td><? echo $post_title;?></td>
    58.     <td><? echo $cost_1; ?></td>
    59.   </tr>
    60. <? 
    61.    
    62.  }
    63.  ?></table><?
    64. }