Как объеденить два запроса?

Ссылка скопирована
1 ответ

есть таблица:

CREATE TABLE `candidats` (   `id` int(11) NOT NULL,   `id_v` int(11) NOT NULL,   `id_p` int(11) DEFAULT NULL,   `id_c` int(11) DEFAULT NULL,   `img_c` varchar(255) DEFAULT NULL,   `id_agency` int(11) NOT NULL,   `date_add` varchar(100) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `candidats` ( `id` int(11) NOT NULL, `id_v` int(11) NOT NULL, `id_p` int(11) DEFAULT NULL, `id_c` int(11) DEFAULT NULL, `img_c` varchar(255) DEFAULT NULL, `id_agency` int(11) NOT NULL, `date_add` varchar(100) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;

с записями кандидатов для какого-либо агенства

INSERT INTO `tori_vacancie_candidats` (`id`, `id_v`, `id_p`, `id_c`, `img_c`, `id_user`, `date_add`) VALUES (13, 305, NULL, 185, 'Media/images/portfolio/185/simonaumilio90.jpg', 181, '1663151218'), (14, 297, NULL, 186, 'Media/images/portfolio/186/hafydyyahya.jpg', 160, '1663164538'), (15, 330, NULL, 188, 'Media/images/portfolio/188/aurorarexhaj22.jpg', 141, '1663361459'), (18, 344, NULL, 189, 'Media/images/portfolio/189/TizianoAzzalin.jpg', 160, '1663498565'), (45, 752, NULL, 314, 'Media/images/portfolio/314/SimonettaVettori.pdf', 181, '1675437808'), (44, 785, NULL, 313, 'Media/images/portfolio/313/MASSIMILIANOSIMIONATO.pdf', 181, '1675424493'), (43, 787, NULL, 312, 'Media/images/portfolio/312/MassimilianoVASSELAI.jpg', 181, '1675337681'), (42, 783, NULL, 311, 'Media/images/portfolio/311/ZeeshanIbrahimi.pdf', 181, '1675293988'), (46, 321, NULL, 317, 'Media/images/portfolio/317/AlfredoFetahi.pdf', 164, '1676289208'), (47, 808, NULL, 318, 'Media/images/portfolio/318/AhmedElwaraky.jpg', 160, '1676659935'), (48, 812, NULL, 319, 'Media/images/portfolio/319/PasqualeMaggio.pdf', 203, '1676706582'), (49, 810, NULL, 320, 'Media/images/portfolio/320/MarinellaBerto.pdf', 181, '1676707268'), (50, 812, NULL, 321, 'Media/images/portfolio/321/FabioNagro.pdf', 203, '1676708236'), (51, 813, NULL, 322, 'Media/images/portfolio/322/MircoDalan.pdf', 203, '1676719323'), (52, 816, NULL, 323, 'Media/images/portfolio/323/AngeloAttanasio.pdf', 141, '1676884258'), (53, 824, NULL, 324, 'Media/images/portfolio/324/SimonaRota.pdf', 141, '1677017006'), (54, 814, NULL, 325, 'Media/images/portfolio/325/NicolaRizzo.pdf', 203, '1677058825'), (55, 824, NULL, 326, 'Media/images/portfolio/326/AdeelAhmed.pdf', 141, '1677325852'), (56, 823, NULL, 327, 'Media/images/portfolio/327/RonaldArteaga.pdf', 141, '1677395722'), (57, 832, NULL, 329, 'Media/images/portfolio/329/AssuntaLombardo.pdf', 181, '1677433498'), (58, 835, NULL, 330, 'Media/images/portfolio/330/FabianoKasli.jpg', 181, '1677538910'), (59, 427, NULL, 331, 'Media/images/portfolio/331/NirodhaFernando.jpg', 139, '1677657549'), (60, 832, NULL, 334, 'Media/images/portfolio/334/EditNizsaloczki.pdf', 181, '1677802582'), (61, 843, NULL, 335, 'Media/images/portfolio/335/BledarFerra.jpg', 141, '1677842326'), (62, 777, NULL, 336, 'Media/images/portfolio/336/AlessandroUsce.pdf', 181, '1678128750'), (63, 844, NULL, 337, 'Media/images/portfolio/337/AngeloAngelo.pdf', 164, '1678178386'), (64, 845, NULL, 338, 'Media/images/portfolio/338/BuosiBuosi.pdf', 181, '1678352266'), (65, 856, NULL, 341, 'Media/images/portfolio/341/MoutarouBarry.pdf', 181, '1678392451');

INSERT INTO `tori_vacancie_candidats` (`id`, `id_v`, `id_p`, `id_c`, `img_c`, `id_user`, `date_add`) VALUES (13, 305, NULL, 185, 'Media/images/portfolio/185/simonaumilio90.jpg', 181, '1663151218'), (14, 297, NULL, 186, 'Media/images/portfolio/186/hafydyyahya.jpg', 160, '1663164538'), (15, 330, NULL, 188, 'Media/images/portfolio/188/aurorarexhaj22.jpg', 141, '1663361459'), (18, 344, NULL, 189, 'Media/images/portfolio/189/TizianoAzzalin.jpg', 160, '1663498565'), (45, 752, NULL, 314, 'Media/images/portfolio/314/SimonettaVettori.pdf', 181, '1675437808'), (44, 785, NULL, 313, 'Media/images/portfolio/313/MASSIMILIANOSIMIONATO.pdf', 181, '1675424493'), (43, 787, NULL, 312, 'Media/images/portfolio/312/MassimilianoVASSELAI.jpg', 181, '1675337681'), (42, 783, NULL, 311, 'Media/images/portfolio/311/ZeeshanIbrahimi.pdf', 181, '1675293988'), (46, 321, NULL, 317, 'Media/images/portfolio/317/AlfredoFetahi.pdf', 164, '1676289208'), (47, 808, NULL, 318, 'Media/images/portfolio/318/AhmedElwaraky.jpg', 160, '1676659935'), (48, 812, NULL, 319, 'Media/images/portfolio/319/PasqualeMaggio.pdf', 203, '1676706582'), (49, 810, NULL, 320, 'Media/images/portfolio/320/MarinellaBerto.pdf', 181, '1676707268'), (50, 812, NULL, 321, 'Media/images/portfolio/321/FabioNagro.pdf', 203, '1676708236'), (51, 813, NULL, 322, 'Media/images/portfolio/322/MircoDalan.pdf', 203, '1676719323'), (52, 816, NULL, 323, 'Media/images/portfolio/323/AngeloAttanasio.pdf', 141, '1676884258'), (53, 824, NULL, 324, 'Media/images/portfolio/324/SimonaRota.pdf', 141, '1677017006'), (54, 814, NULL, 325, 'Media/images/portfolio/325/NicolaRizzo.pdf', 203, '1677058825'), (55, 824, NULL, 326, 'Media/images/portfolio/326/AdeelAhmed.pdf', 141, '1677325852'), (56, 823, NULL, 327, 'Media/images/portfolio/327/RonaldArteaga.pdf', 141, '1677395722'), (57, 832, NULL, 329, 'Media/images/portfolio/329/AssuntaLombardo.pdf', 181, '1677433498'), (58, 835, NULL, 330, 'Media/images/portfolio/330/FabianoKasli.jpg', 181, '1677538910'), (59, 427, NULL, 331, 'Media/images/portfolio/331/NirodhaFernando.jpg', 139, '1677657549'), (60, 832, NULL, 334, 'Media/images/portfolio/334/EditNizsaloczki.pdf', 181, '1677802582'), (61, 843, NULL, 335, 'Media/images/portfolio/335/BledarFerra.jpg', 141, '1677842326'), (62, 777, NULL, 336, 'Media/images/portfolio/336/AlessandroUsce.pdf', 181, '1678128750'), (63, 844, NULL, 337, 'Media/images/portfolio/337/AngeloAngelo.pdf', 164, '1678178386'), (64, 845, NULL, 338, 'Media/images/portfolio/338/BuosiBuosi.pdf', 181, '1678352266'), (65, 856, NULL, 341, 'Media/images/portfolio/341/MoutarouBarry.pdf', 181, '1678392451');

где id_c - ид кандидата и id_agency - ид агентстыва, которое может повторяться

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

Дополнительно:

Вы показали 2 таблицы про кандидатов, но ни одной про агентства.
Можно ли выбрать - можно. Вот болванка, исправьте её под свой случай:

SELECT `a`.* , COUNT(`c`.`id_c`) FROM agencies AS `a`  LEFT JOIN `candidats` AS `c` ON ( `a`.`id`=`c`. `id_agency`) GROUP BY `a`.`id`

SELECT `a`.* , COUNT(`c`.`id_c`) FROM agencies AS `a` LEFT JOIN `candidats` AS `c` ON ( `a`.`id`=`c`. `id_agency`) GROUP BY `a`.`id`

  • А что пробовали сделать и что не получилось? Вам всего-то понадобятся GROUP BY и COUNT
  • Михаил Ливач, спасибо! Вы мне помогли!
  • https://dev.mysql.com/doc/refman/8.0/en/example-ma...
    https://dev.mysql.com/doc/refman/8.0/en/counting-r...

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Ольга Сеть Ответ

    Для объединения двух запросов в PHP можно воспользоваться оператором UNION. UNION объединяет результаты двух или более SELECT запросов в один результат. Вот пример:

    $query1 = "SELECT column1, column2 FROM table1 WHERE condition1";
    $query2 = "SELECT column3, column4 FROM table2 WHERE condition2";
     
    $finalQuery = $query1 . " UNION " . $query2;
     
    // Выполнение объединенного запроса
    $result = mysqli_query($connection, $finalQuery);
     
    if ($result) {
        // Обработка результатов
        while ($row = mysqli_fetch_assoc($result)) {
            // Доступ к данным в $row['column1'], $row['column2'], $row['column3'], $row['column4']
        }
    } else {
        // Обработка ошибки запроса
        echo "Ошибка выполнения запроса: " . mysqli_error($connection);
    }

    $query1 = "SELECT column1, column2 FROM table1 WHERE condition1"; $query2 = "SELECT column3, column4 FROM table2 WHERE condition2"; $finalQuery = $query1 . " UNION " . $query2; // Выполнение объединенного запроса $result = mysqli_query($connection, $finalQuery); if ($result) { // Обработка результатов while ($row = mysqli_fetch_assoc($result)) { // Доступ к данным в $row['column1'], $row['column2'], $row['column3'], $row['column4'] } } else { // Обработка ошибки запроса echo "Ошибка выполнения запроса: " . mysqli_error($connection); }

    В данном примере мы объединяем два запроса $query1 и $query2 с помощью оператора UNION и сохраняем объединенный запрос в переменную $finalQuery. После этого мы выполняем объединенный запрос с помощью функции mysqli_query и обрабатываем результаты, полученные из базы данных.

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно