За последние 24 часа нас посетили 73999 программистов и 10168 роботов. Сейчас ищут 2439 программистов ...

подсчет количества строк в одной таблице по совпадению с данными из другой

Тема в разделе "Прочее", создана пользователем andrewpmp, 6 сен 2022.

Метки:
  1. andrewpmp

    andrewpmp Новичок

    С нами с:
    6 сен 2022
    Сообщения:
    3
    Симпатии:
    1
    Как с помощью while вывести подсчет количества строк в одной таблице по совпадению с данными из другой

    вывожу данные из БД с помощью while. стоит задача подсчитать количество строк у которых id совпадает с номером в колонке другой таблицы. не уверен, что правильно оформил запрос $kolich, но даже если логика верна, то не пойму как это вывести в таблицу прошу прощения сразу. у меня нет образования в программировании, решаю задачи с помощью таких "глупых" вопросов на форумах, а потом использую логику. Очень прошу помочь с этой задачей, решив ее, я решу много других
    [​IMG]
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.129
    Симпатии:
    1.225
    Адрес:
    там-сям
    Для подсчета количества чего-то с одинаковым чем-то ))) используй GROUP BY что-то :D
    Точнее не могу сказать, потому что ты используешь бессмысленные имена. Поэтому ответ тоже с бессмысленными именами.

    Картинка в данном случае не нужна, лучше бы копировал сам код. Вижу что ты запутался с результатом ДВУХ запросов, пытаешься совместить их но они не связаны.
    и вот здесь ошибка: &kolich - доллар надо, а не амперсанд.

    насчет "<td>??????</td>": тебе трудно сформулировать вопрос? это ппц как плохо.
    Дай угадаю: ты можешь дать имя результату COUNT(*) например так:
    SELECT COUNT(*) AS cnt
    и потом читать его как $row['cnt']. Или ты можешь добывать данные функцией mysqli_fetch_array и обращаться к полям по их порядковому номеру, а не имени.
    https://www.php.net/manual/en/mysqli-result.fetch-array
     
    andrewpmp нравится это.
  3. andrewpmp

    andrewpmp Новичок

    С нами с:
    6 сен 2022
    Сообщения:
    3
    Симпатии:
    1
    все рабоатет, благодарю.
    получилось так:
    SELECT t1.id, t1.k1, t1.k2, t1.k3, t1.k4, t1.k5, COUNT(t2.k8) as cnt
    FROM adsak AS t1
    LEFT JOIN adskl as t2
    ON t1.id = t2.k8
    GROUP BY t1.id
    ORDER BY t1.id DESC

    подскажите как мне в эту выборку добавить условие where k1 = 'остановлена', всяко подставлял - не работает
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.875
    Симпатии:
    756
    Адрес:
    Татарстан
    надо не всяко - методом тыка, а как положено по синтаксису - перед GROUP BY
     
    andrewpmp нравится это.
  5. andrewpmp

    andrewpmp Новичок

    С нами с:
    6 сен 2022
    Сообщения:
    3
    Симпатии:
    1
    всем спасибо! в итоге готовое решение выглядит так:
    выборка с обеих таблиц в одном запросе
    SELECT t1.id, t1.k1, t1.k2, t1.k3, t1.k4, t1.k5, COUNT(t2.k8) as cnt
    FROM adsak AS t1
    LEFT JOIN adskl as t2
    ON t1.id = t2.k8
    WHERE t1.k1 = 'действует'
    GROUP BY t1.id
    ORDER BY t1.id DESC

    а в html так:

    <td><?echo $row['k1'];?></td>
    <td><b><?echo $row['id'];?></b></td>
    <td><?echo $row['k5'];?></td>
    <td><?echo $row['k2'];?></td>
    <td><?echo $row['k3'];?></td>
    <td><?echo $row['k4'];?></td>
    <td><?echo $row['cnt'];?></td>
     
    artoodetoo нравится это.