Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
MySQL

Не удается вытащить данные, отфильтровать

19.04.2021, 10:32. Показов 2582. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
$host = 'локал';
$database = 'бд';
$user = 'юзер';
$password = 'пасс';
 
$link = mysqli_connect($host, $user, $password, $database) or die("Ошибка " . mysqli_error($link));
 
$res1 = mysqli_fetch_assoc(mysqli_query($link, "SELECT SUM(meta_value) summa1 FROM wp_postmeta WHERE meta_key = 'subsidiya'"));
 
 $var = $res1['summa1'];
 
    $number = $res1['summa1'];
    $itogo = number_format($number, 2, ",", " ");
    echo "Итого: $itogo";
 
mysqli_close($link);
?>
Нужно добавить фильтрацию-выборку по году, а именно по значению поля year_kassa - 2021.

Пробовал через AND

PHP
1
WHERE meta_key = 'subsidiya' AND meta_value = '2021'
- выдает нуль.

Что делаю не так?!
Миниатюры
Не удается вытащить данные, отфильтровать  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2021, 10:32
Ответы с готовыми решениями:

Отфильтровать данные из первого dataGridView1 и вывести отфильтрованные данные во второй
Добрый день!Нужно отфильтровать данные из первого dataGridView1 и вывести отфильтрованные данные во второй. BindingSource bs = new...

Как вытащить из свойства fields recordset вытащить данные в массив
Как вытащить из свойства fields recordset вытащить данные в массив ассоциативный , подскажите плиз

Отфильтровать данные
Есть вот такой код, как такую фильтрацию сделать при помощи DBComboBox и AdoTable??? ADOTable1-&gt;Filtered=false; AnsiString textEdit...

36
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
19.04.2021, 15:31
Студворк — интернет-сервис помощи студентам
я вам написал пример в ooп стиле
у вас код в процедурном стиле
перепишите, или свое подключение к базе на ooп, или мой код на процедурный
вы по ссылке смотрели материал?
судя по всему, нет
1
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
19.04.2021, 15:54  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$mysqli = new mysqli($host, $user, $password, $database);
 
$array_post_id = [];
 
$query = "SELECT post_id FROM wp_postmeta WHERE meta_key = 'year_kassa' AND meta_value = '2021'";
$result = $mysqli->query($query);
 
while ($row = $result->fetch_assoc()) {
    $array_post_id[] = $row['post_id'];
}
 
if(!empty($array_post_id)){
    $query = "SELECT SUM(meta_value) summa1 FROM wp_postmeta WHERE meta_key = 'subsidiya' AND post_id IN(" . implode(',', $array_post_id) . ")";
    $result = $mysqli->query($query);
}
 
 $var = $res1['summa1'];
 
    $number = $res1['summa1'];
    $itogo = number_format($number, 2, ",", " ");
    echo "Итого: $itogo";
 
$mysqli->close();
?>
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
19.04.2021, 15:58
Цитата Сообщение от xetaji2563 Посмотреть сообщение
$res1['summa1'];
тогда тут
Цитата Сообщение от xetaji2563 Посмотреть сообщение
$query = "SELECT SUM(meta_value) summa1 FROM wp_postmeta WHERE meta_key = 'subsidiya' AND post_id IN(" . implode(',', $array_post_id) . ")";
    $result = $mysqli->query($query);
так
PHP
1
 $res1 = $mysqli->query($query);
1
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
19.04.2021, 16:02  [ТС]
И не сработало

Fatal error: Uncaught Error: Call to a member function fetch_assoc() on null
0
19.04.2021, 16:22

Не по теме:

xetaji2563, судя по названию таблицы "wp_postmeta", вы используете Wordpress. Там подключение к СУБД уже реализовано, не нужно свои подключения городить.

0
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
19.04.2021, 16:23  [ТС]
Para bellum, да, верно.
Отдельный файл с коннектом и выборкой из БД.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2021, 16:26
Цитата Сообщение от xetaji2563 Посмотреть сообщение
Отдельный файл с коннектом и выборкой из БД.
Ну я и говорю, что такие отдельные файлы не стоит делать, работая в контексте CMS.
Т.е. если работаете с частями CMS (а БД -- часть), лучше использовать функционал этой CMS.
1
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
19.04.2021, 16:30  [ТС]
Para bellum, благодарю, буду иметь в виду. Но тут не об этом речь :-)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2021, 18:26
Лучший ответ Сообщение было отмечено xetaji2563 как решение

Решение

Попробуйте так:
SQL
1
2
3
4
5
6
7
SELECT SUM(a.meta_value)
    FROM wp_postmeta a
    LEFT JOIN wp_postmeta b USING(post_id)
WHERE
    b.meta_key = 'year_kassa'
    AND b.meta_value = 2021
    AND a.meta_key = 'subsidiya'
2
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
19.04.2021, 18:37
Цитата Сообщение от Para bellum Посмотреть сообщение
FROM wp_postmeta a
    LEFT JOIN wp_postmeta b USING(post_id)
о, не знал что так можно
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
19.04.2021, 18:49
fanatikus, в смысле саму с собой таблицу объединять?
0
 Аватар для fanatikus
1932 / 1523 / 703
Регистрация: 17.11.2012
Сообщений: 6,585
19.04.2021, 18:58
Цитата Сообщение от Para bellum Посмотреть сообщение
в смысле саму с собой таблицу объединять?
да.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
20.04.2021, 08:25
Уточнение.
Цитата Сообщение от Para bellum Посмотреть сообщение
LEFT JOIN
"LEFT" лучше убрать.
0
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
20.04.2021, 09:13  [ТС]
Итого:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
$host = 'локал';
$database = 'бд';
$user = 'юзер';
$password = 'пасс';
 
$mysqli = new mysqli($host, $user, $password, $database);
 
$res1 = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT SUM(a.meta_value) FROM wp_postmeta a JOIN wp_postmeta b USING(post_id) WHERE b.meta_key = 'year_kassa' AND b.meta_value = 2021 AND a.meta_key = 'subsidiya'"));
 
$var = $res1['summa1'];
 
$number = $res1['summa1'];
$itogo = number_format($number, 2, ",", " ");
echo "Итого: $itogo";
 
$mysqli->close();
?>
0,00
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
20.04.2021, 09:53
Вы же пытаетесь из результата получить summa1, значит надо SUM(a.meta_value) заменить на SUM(a.meta_value) summa1
1
0 / 0 / 0
Регистрация: 15.04.2021
Сообщений: 22
20.04.2021, 10:00  [ТС]
Para bellum, ну, елки-палки, точно же! Добавил, заработало! Спасибоооо!

А год в одиночные кавычки заключать не нужно?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
20.04.2021, 10:01
Цитата Сообщение от xetaji2563 Посмотреть сообщение
А год в одиночные кавычки заключать не нужно?
Числа не обязательно заключать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2021, 10:01

Необходимо отфильтровать данные
Всех приветствую! Необходимо отфильтровать данные - номера счетов в столбце по следующим критериям &quot;=40*&quot;, &quot;=41*&quot;,...

Правильно отфильтровать данные
Фильтрую данные таким способом : Sheets.Add After:=Sheets(Sheets.Count) Sheets(Sheets.Count).Name = &quot;Критерии&quot; Cells(2, 1)...

Отфильтровать и сложить данные
Друзья! Есть XLS файл содержащий 2 колонки. Первая - набор цифр Вторая содержит записи, которые могу повторятся между собой. ...

Отфильтровать данные в StringGrig
Здравствуйте. Подскажите идею! Есть форма на которую из excel импортируются данные в StringGrig. Далее нужно чтобы данные фильтровались и...

Не могу отфильтровать данные
Всем привет! Народ, у меня вот какая задача: Есть объект вида: object(SimpleXMLElement)#1 (1) { =&gt; array(31796) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru