Как отсортировать результаты SQL-запроса, если значение одинаковое? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть таблица (элементы) в моей БД, и она выглядит так:

 --------------------------------------
| id | name | price | buyer | status   |
 --------------------------------------
| 1    item1    10     Bob   requested |
| 2    item2    20     Bob   requested |
| 3    item3    10     Tom   requested |
 --------------------------------------

Я пытаюсь запросить данные, а затем отсортировать их, объединить и отобразить по имени. Если два имени одинаковы, это сгруппирует их в один div в моем HTML, а если они будут разные, сгруппирует их в другой div. По сути, каждая группа имен имеет свой собственный div, независимо от того, есть ли 0 или 20 одинаковых имен. До сих пор я запрашивал свои данные так

$request_data_query = $db->prepare("SELECT * FROM items WHERE status = 'requested' GROUP BY buyer");
$request_data_query->execute();

while($fetch = $request_data_query->fetch(PDO::FETCH_ASSOC)) {

тогда я пытался сравнить результаты, чтобы увидеть, соответствуют ли они

    if ($fetch['buyer'] === $fetch['buyer']) {
        //Same name HTML code here
    } else {
       // Single person HTML
    }
}

Этот код сортирует не так, как я думал. Это печатает 2 отдельных div для дублирующего имени и не печатает одного человека. Я не совсем уверен, что еще делать.

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете использовать что-то вроде этого. Тот, который не совсем подходит для вашего использования, но основан на ваших примерах.

// this goes before your loop
$previousBuyer = '';

// then inside your loop
if ($previousBuyer === $fetch['buyer']) {
    //Same name HTML code here
} else {
   // Single person HTML
}
$previousBuyer = $fetch['buyer'];

Вам необходимо будет учесть первого покупателя, которого вы проверяете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...