Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
1

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.01.2016, 22:34
Ответы с готовыми решениями:

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

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

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

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

23
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 22:45 2
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  [ТС] 3
Выводит только число 1, а должно больше 500.
0
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:03 4
Цитата Сообщение от mat777 Посмотреть сообщение
Выводит только число 1, а должно больше 500.
запрос правильный можете выполнить в phpmyadmin, консоли ...
$result = $mysqli->query() возвращает объект при SELECT
читайте документацию внимательно
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
20.01.2016, 23:13  [ТС] 5
Но ведь с одной таблицей работает, выводит общее кол-во, а при:
SQL
1
IF ($result = $mysqli->query("SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2`) AS 'all'"))
показывает, будто только одна запись, т.е не суммирует(
Может есть другой способ?
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
20.01.2016, 23:23 6
mat777, какой-то страшный код вы показали, как именно проверяете количество элементов?

Проверил вышеозвученный вариант, у меня работает.
0
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:31 7
Цитата Сообщение от mat777 Посмотреть сообщение
Может есть другой способ?
Конечно есть. Научится работать с базой данных.
Вы же уже почти написали код. Теперь осталось всего немножко прочитать страницу документации.
Чтобы подсчитать количество записей не нужно получать все id этих записей. Это может быть затратно и незачем. Для этого есть COUNT
Ведь достаточно ваш запрос вставить в примеры описанные в документации
1
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
20.01.2016, 23:33  [ТС] 8
Какой нашел в инэте)) Сделал так как подсказал 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
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
20.01.2016, 23:51 9
/* определение числа рядов в выборке */
$row_cnt = $result->num_rows;
результат 1 строка в выборке для данного запроса всегда будет
читай страницу которую дал, сколько можно разжевывать

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

А то пытался другим вариантом делать
0
Эксперт PHP
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
21.01.2016, 00:10 11
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  [ТС] 12
Всё разобрался Благодарю Poznakomlus помог.

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

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

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

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

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

Добавлено через 11 часов 59 минут
Неужели не кто не в курсе?
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.01.2016, 20:54 17
mat777, вам дали ссылку на изучение и пример готового кода. Лично я не в курсе, чем ещё вам помочь.
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 21:22  [ТС] 18
Jodah то что в начале обсуждали уже получилось, теперь пытаюсь вывести сумму определённых записей всё также из 2-х таблиц, но во второй еще и с условием WHERE.
Но так не хочет вщитывать 2-ю табл
SQL
1
SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE `img`='фото') AS 'all'
0
Эксперт PHP
3851 / 3196 / 1343
Регистрация: 01.08.2012
Сообщений: 10,820
21.01.2016, 22:10 19
mat777, магии не бывает. Запрос написан правильно, значит либо выводите криво, либо не везде img = 'фото'.
0
0 / 0 / 0
Регистрация: 06.08.2013
Сообщений: 135
21.01.2016, 23:27  [ТС] 20
А если в img есть пустые поля, может из-за этого не выводить?
0
21.01.2016, 23:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.01.2016, 23:27
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru