За последние 24 часа нас посетили 16688 программистов и 1643 робота. Сейчас ищут 979 программистов ...

Правильный запрос

Тема в разделе "MySQL", создана пользователем rustoke, 30 окт 2015.

  1. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Слишком много запросов, помогите скомпоновать .

    Код (PHP):
    1. <?php
    2.     $result_ads = mysql_query("SELECT * FROM csfd_items WHERE verify != 'off' AND on_site = '1' AND deleted = '0' AND published = '1'  ORDER BY date1 DESC LIMIT 15", $link);
    3.     while($rows_ads = mysql_fetch_array($result_ads)){   
    4.         //фото
    5.         $foto = mysql_fetch_array(mysql_query("SELECT * FROM csfd_item_photos WHERE item_id = '".$rows_ads['id']."' ", $link));
    6.         //путь до изображения
    7.         $imgpath = $apath."/public/csfd_items/images/medium/".$foto['id'].".jpg";
    8.         //Категория 1-го уровня
    9.         $cat_1 = mysql_fetch_array(mysql_query("SELECT * FROM csfd_categories WHERE parent_id = '".$rows_ads['cont_id1']."' ", $link));
    10.         //Категория 2-го уровня
    11.         $cat_2 = mysql_fetch_array(mysql_query("SELECT * FROM csfd_categories WHERE parent_id = '".$rows_ads['cont_id2']."' ", $link));
    12.         $csfd_items_templates = mysql_fetch_array(mysql_query("SELECT * FROM csfd_items_templates WHERE id = '".$cat_1['csfd_item_template']."' OR id = '".$cat_2['csfd_item_template']."'  ", $link));
    13.  
    14.     echo "<table class='preview_ads'><tr>";
    15.  
    16.     if($foto['id'] != "" && $imgpath){
    17.         echo "<td class='td_img'><img src='".$imgpath."'></td>";
    18.     }else{
    19.         echo "";
    20.     }
    21.     
    22.     echo "<td>"; 
    23.  
    24. echo "<table class='tst'>"; //УДАЛИТЬ
    25. echo "<tr>";
    26. echo "<td>csfd_params<br>element_id</td>";
    27. echo "<td>csfd_elements<br>sort</td>";
    28. echo "<td>csfd_elements<br>title</td>";
    29. echo "<td>csfd_datasources<br>id</td>";
    30. echo "<td>Данные</td>";
    31. echo "</tr>";
    32.  
    33.     if($rows_ads['title'] != ''){
    34.         echo "<h1>".$rows_ads['title']."</h1>"; 
    35.     }else{
    36.         echo "<h1>".$csfd_items_templates['title']."</h1>";
    37.     }
    38.  
    39.     $res = mysql_query("SELECT * FROM csfd_params WHERE csfd_item_id = '".$rows_ads['id']."' AND value != '0' AND value != '' ", $link);
    40.     while($csfd_params = mysql_fetch_array($res))
    41.     {   
    42.         
    43.         $csfd_elements = mysql_fetch_array(mysql_query("SELECT * FROM csfd_elements WHERE id = '".$csfd_params['element_id']."' ", $link));
    44.         
    45.        $csfd_datasources = mysql_fetch_array(mysql_query("SELECT * FROM csfd_datasources WHERE id = '".$csfd_params['value']."' AND parent_id !='0'   ", $link));
    46.             
    47.         $csfd_datasources_id = mysql_fetch_array(mysql_query("SELECT * FROM csfd_datasources WHERE id = '".$csfd_elements['datasource_id']."'   ", $link));
    48.        
    49.  
    50.     $ro_elements_id = $csfd_params['element_id'];
    51.     $ca_title = $csfd_elements['title'];
    52.        
    53.        //Ссоздаю условие, чтобы знать, выводить ли из value значение или нет
    54.        if($csfd_elements['datasource_id'] != $csfd_datasources_id['id']){
    55.             $fa_title = "";
    56.             $ro_value = $csfd_params['value'];
    57.        }else{
    58.             $fa_title = $csfd_datasources['title'];
    59.             $ro_value = "";
    60.        }
    61.  
    62. echo "<tr>";
    63. echo "<td>";
    64. echo $ro_elements_id;
    65. echo "</td>";
    66. echo "<td>";
    67. echo $csfd_elements['sort']; 
    68. echo "</td>";
    69. echo "<td>";
    70. echo $ca_title;
    71. echo "</td>";
    72. echo "<td>";
    73. echo $csfd_datasources['id'];
    74. echo "</td>";
    75. echo "<td>";
    76. echo "<b>".$ro_value." ".$fa_title;
    77. echo "</td>";
    78. echo "</tr>";
    79.  
    80.     }
    81.  
    82. echo "</table>"; 
    83.  
    84.  
    85.   echo "<br><br> Тел: ".$rows_ads['tel'];
    86.     echo "</td>";
    87.     echo "</tr></table>";
    88.  
    89.     }
    90.  
    91. ?>
    В итоге получаем это:
    [​IMG]
    Как из цикла выдернуть по параметру цену и передвинуть на самый верх?
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    JION + ORDER BY ($;
     
  3. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    у меня уже голова кипит, я знаю что JOIN , но пока я не до думал как это реализовать, можете на моем примере реализовать?
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    у тебя тут 4 запроса объединяющиеся по каким то полям. Вот и join'и их по этим полям ((:)
     
  5. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Ну ок, а как выдернуть параметр с ценой ? у меня идея только на in_array , но это нужно будет много параметров в array прописывать, есть по короче способ?
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    цена же у тебя в БД??? он у тебя и выдернется оттуда и делай ORDER BY по нему (:)
     
  7. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    order by сортирует по убывающей, а если там параметры в перемешку 3,6,2,1,5,4, а мне например нужно так 1,2,3,6,5,4
     
  8. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    пример
    Код (PHP):
    1. .... ORDER BY `price` ASC
    отсортирует как раз так, как ты и желаешь 1,2,3,4,5,6....
     
  9. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    ASC по возрастающей, а мне нужно 6 в середину
     
  10. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    значить еще по какому то полю надо делать ORDER BY :)
    Код (Text):
    1. ...ORDER BY `id` ASC, `price` ASC