Задать вопрос
Ответы пользователя по тегу SQL
  • Как правильно составить sql запрос на получение данных по заказу?

    nskarl
    @nskarl
    Вообще дизайнер
    одним запросом нельзя собрать массив в массиве
    два варианта решения:

    1. два отдельных запроса, потом сборка одного массива, описывал вот тут: Есть задачка по выгрузке данных. Какие есть идеи?

    2. подзапрос в запросе
    datas = mysql select * from table

    foreach(datas as key => data) {
    datas[key][subdata] = mysql select * from table where data[id]
    }

    предпочтительнее первый вариант
    Ответ написан
  • Есть задачка по выгрузке данных. Какие есть идеи?

    nskarl
    @nskarl
    Вообще дизайнер
    Можно вытаскивать 2 массива отдельно по необходимым параметрам и после объединять их через php:
    Вытаскиваем сначала даты:
    $dates = $this->get_dates( select * );

    затем переформируем даты в новый массив, т.к. вытащенные даты могут идти не по порядку
    и в отдельный массив суем даты, данные по которым нам нужны:
    foreach ($dates as $key => $date)
    		{
    			$data_to_show[$key] = $date;
    			$dates_array[] = $date['date'];
    		}


    затем вытаскиваем только те данные, по датам которых нам нужны:
    $analiz = $this->get_analizs( select * where_in($dates_array));


    и затем пересобираем первый массив
    foreach ($analiz as $row)
    		{
    			$data_to_show[$row['analiz_key']][] = $row;
    		}

    -----------------------------

    я не знаю какие ключи у вас там выбираются, но вот мой пример, где объединяются пользователи и машины, которые есть у этих пользователей
    надеюсь правильно вас понял и в правильном направлении вас подтолкнул

    $users = $this->user_model->get_users();
    		foreach ($users as $user)
    		{
    			$users_to_show[$user['username']] = $user;
    			$names[] = $user['username'];
    		}
    		
    		$cars = $this->user_model->get_cars($names);
    		foreach ($cars as $car)
    		{
    			$users_to_show[$car['owner']]['cars'][] = $car;
    		}
    Ответ написан
    Комментировать