0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135

Вывести число записей с двух таблиц

20.01.2016, 22:34. Показов 1592. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите как сделать вывод числа всех записей с двух таблиц. С одной получилось:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$mysqli = new mysqli("localhost", "", "", "");
 
/* проверка соединения */
if (mysqli_connect_errno()) {
    printf("Соединение не удалось: %s\n", mysqli_connect_error());
    exit();
}
 
if ($result = $mysqli->query("SELECT id FROM tabl1 ORDER BY id")) 
{
    /* определение числа рядов в выборке */
    $row_cnt = $result->num_rows;
 
    printf("В базе %d записей.\n", $row_cnt);
 
    /* закрытие выборки */
    $result->close();
}
 
/* закрытие соединения */
$mysqli->close();
?>
Пытался так но не работает:
SQL
1
IF ($result = $mysqli->query("SELECT * FROM ( SELECT id from tabl1 ORDER BY id  UNION SELECT id from tabl2 ORDER BY id)"))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.01.2016, 22:34
Ответы с готовыми решениями:

Выбор записей с двух таблиц
Здравствуйте Есть 2 таблицы Client и PayList Делаю вот такой запрос SELECT Client.FamClient, PayList.OplPos, PayList.Posetil FROM...

Выбор записей из двух таблиц
Здравствуйте. Есть таблица users. В ней есть поля id, login, email, etc. Есть еще одна таблица dialogs. В ней поля id, reciver, sender,...

Выбор записей из двух таблиц
Сразу перейду к делу. 1 таблица goods в ней поля ( 2 для примера ) -&gt; goods_id и cast 2 таблица name в ней поля ( 2 для примера...

23
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 22:45
SQL
1
SELECT (SELECT COUNT(1) FROM `tabl1`) +  (SELECT COUNT(1) FROM `tabl2`) AS 'all'
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
20.01.2016, 22:50  [ТС]
Выводит только число 1, а должно больше 500.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:03
Цитата Сообщение от mat777 Посмотреть сообщение
Выводит только число 1, а должно больше 500.
запрос правильный можете выполнить в phpmyadmin, консоли ...
$result = $mysqli->query() возвращает объект при SELECT
читайте документацию внимательно
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
20.01.2016, 23:13  [ТС]
Но ведь с одной таблицей работает, выводит общее кол-во, а при:
SQL
1
IF ($result = $mysqli->query("SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2`) AS 'all'"))
показывает, будто только одна запись, т.е не суммирует(
Может есть другой способ?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
20.01.2016, 23:23
mat777, какой-то страшный код вы показали, как именно проверяете количество элементов?

Проверил вышеозвученный вариант, у меня работает.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:31
Цитата Сообщение от mat777 Посмотреть сообщение
Может есть другой способ?
Конечно есть. Научится работать с базой данных.
Вы же уже почти написали код. Теперь осталось всего немножко прочитать страницу документации.
Чтобы подсчитать количество записей не нужно получать все id этих записей. Это может быть затратно и незачем. Для этого есть COUNT
Ведь достаточно ваш запрос вставить в примеры описанные в документации
1
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
20.01.2016, 23:33  [ТС]
Какой нашел в инэте)) Сделал так как подсказал Poznakomlus, но не суммирует.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$mysqli = new mysqli("localhost", "", "", "");
/* проверка соединения */
if (mysqli_connect_errno()) {
    printf("Соединение не удалось: %s\n", mysqli_connect_error());
    exit();
}
if ($result = $mysqli->query("SELECT (SELECT COUNT(*) FROM `tab1`) UNION (SELECT COUNT(*) FROM `tab2`) AS 'all'")) 
 
 
{
    /* определение числа рядов в выборке */
    $row_cnt = $result->num_rows;
 
    printf(" %d \n", $row_cnt);
 
    /* закрытие выборки */
    $result->close();
}
/* закрытие соединения */
$mysqli->close();
?>
Подскажите пожалуйста вариант по лучше.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:51
/* определение числа рядов в выборке */
$row_cnt = $result->num_rows;
результат 1 строка в выборке для данного запроса всегда будет
читай страницу которую дал, сколько можно разжевывать

Добавлено через 14 минут
Где в моем примере UNION?
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 00:01  [ТС]
Блин не могу догнать. Пробовал разные варианты с той ссылки. Банально не хватает знаний

А то пытался другим вариантом делать
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
21.01.2016, 00:10
PHP
1
2
3
$result = $mysqli->query("SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2`) AS 'all'");
$row = $result->fetch_array(MYSQLI_NUM);
var_dump($row);
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 00:22  [ТС]
Всё разобрался Благодарю Poznakomlus помог.

Добавлено через 9 минут
Еще вопрос. Добавляю условие к одной таблице:
SQL
1
SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE img='фото') AS 'all'
выдаёт результат только с первой таблицы.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
21.01.2016, 00:27
Внимательнее
SQL
1
"SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE `img`='фото') AS 'all'
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 00:35  [ТС]
Всё равно результат только по tab1. Может дело в AS 'all' ?
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
21.01.2016, 00:39
AS 'all' это псевдоним
в tab2 есть значения удовлетворяющие условию WHERE `img`='фото'
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 20:27  [ТС]
Да где то половина записей. В столбце img есть словофото.

Добавлено через 36 секунд
не хочет считать по выборке

Добавлено через 8 минут
Пытался посчитать в одной таблице по условию - не вышло

Добавлено через 7 часов 35 минут
Всю ночь голову ломал, перепробовал миллион вариантов. Не выходит сделать даже для одной таблицы подсчет по условию WHERE.

Очень нужна помощь

Добавлено через 11 часов 59 минут
Неужели не кто не в курсе?
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
21.01.2016, 20:54
mat777, вам дали ссылку на изучение и пример готового кода. Лично я не в курсе, чем ещё вам помочь.
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 21:22  [ТС]
Jodah то что в начале обсуждали уже получилось, теперь пытаюсь вывести сумму определённых записей всё также из 2-х таблиц, но во второй еще и с условием WHERE.
Но так не хочет вщитывать 2-ю табл
SQL
1
SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE `img`='фото') AS 'all'
0
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
21.01.2016, 22:10
mat777, магии не бывает. Запрос написан правильно, значит либо выводите криво, либо не везде img = 'фото'.
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 23:27  [ТС]
А если в img есть пустые поля, может из-за этого не выводить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.01.2016, 23:27
Помогаю со студенческими работами здесь

Удаление записей сразу из двух таблиц
Есть вот такой контроллер на удаление public ActionResult Delete(int id = 0) { UserProfile userprofile =...

Сравнение двух таблиц с добавлением записей
Уважаемые ГУРУ Access! Есть такая задача. Две таблицы с текстовыми полями. tb1 поля tb1.1; tb1.2; tb1.3-пустое текстовое поле и ...

Запрос на сравнение записей из двух таблиц
Всем привет! Ребята подскажите такой вопрос. Есть 2 таблицы, как можно сделать сравнение записей если в таблицах есть: 1. id_loc,...

Запрос на сравнение записей из двух таблиц
имеется две таблицы, в первой таблице (Tabl1) поля id, name, multi, ms, card, sd во второй таблице (Tabl2) поля id, name, multi, card...

Склейка двух таблиц и получение суммы записей
Наверное из мира фантастики, но все же хочу поинтересоваться. Есть две таблицы TABLE_1 - таблицы с новостями id | added_by ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru