Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2016, 20:36   #1
ma777
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 8
По умолчанию Вывести число записей с двух таблиц по условию

Подскажите как сделать вывод числа записей с двух таблиц по условию WHERE. Есть 2 табл t1 и t2 C t1 нужно вывести общей цифрой все записи + t2 c условием, к примеру, где WHERE `img`='фото'.

Получилось вывести только общее кол-во записей 2-х таблиц:
PHP код:
<?php
$link 
mysqli_connect("localhost""""""");
/* проверка подключения */
IF (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}
$query "SELECT (SELECT COUNT(1) FROM `t1`) + (SELECT COUNT(1) FROM `t2`) AS 'all'";
$result mysqli_query($link$query);
/* обычный массив */
$row mysqli_fetch_array($resultMYSQLI_NUM);
printf ("%s %s\n"$row[0], $row[1]);
/* закрываем подключение */
mysqli_close($link);
?>
Пытался сделать так, но выводит только все записи с t1:
Код HTML:
"SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE `img`='фото') AS 'all'"
Подскажите пожалуйста где ошибка или может есть другой способ выполнения данного запроса.
ma777 вне форума Ответить с цитированием
Старый 21.01.2016, 22:01   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ma777 Посмотреть сообщение
Есть 2 табл t1 и t2 C t1 нужно вывести общей цифрой все записи + t2 c условием, к примеру, где WHERE `img`='фото'.

Пытался сделать так, но выводит только все записи с t1:
Код HTML:
"SELECT (SELECT COUNT(1) FROM `tab1`) + (SELECT COUNT(1) FROM `tab2` WHERE `img`='фото') AS 'all'"
Этот запрос вполне себе работает, и всё правильно считает:
Код:
mysql> select * from `t1`;
+----+---------+
| id | value   |
+----+---------+
|  1 | value 1 |
|  2 | value 2 |
|  3 | value 3 |
+----+---------+
3 rows in set (0.00 sec)

mysql> select * from `t2`;
+----+---------+----------+
| id | value   | img      |
+----+---------+----------+
|  1 | value 1 | фото     |
|  2 | value 2 | лого     |
|  3 | value 3 | фото     |
|  4 | value 4 | лого     |
+----+---------+----------+
4 rows in set (0.00 sec)

mysql> SELECT (SELECT COUNT(1) FROM `t1`) + (SELECT COUNT(1) FROM `t2` WHERE `img`='фото') AS `all`;
+------+
| all  |
+------+
|    5 |
+------+
1 row in set (0.00 sec)

mysql>
Andkorol вне форума Ответить с цитированием
Старый 21.01.2016, 23:12   #3
ma777
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 8
По умолчанию Всё то же

Вот полный код может где то недочёт, посмотрите пожалуйста:
PHP код:
<?php
$link 
mysqli_connect("localhost""""""");
/* проверка подключения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}
$query "SELECT (SELECT COUNT(1) FROM `t2` WHERE `img`='фото') + (SELECT COUNT(1) FROM `t1`) AS 'all'";
$result mysqli_query($link$query);
/* обычный массив */
$row mysqli_fetch_array($resultMYSQLI_NUM);
printf ("%s %s\n"$row[0], $row[1]);
/* закрываем подключение */
mysqli_close($link);
?>
Показывает только число всех записей с t1. Не могу понять в чём дело.
ma777 вне форума Ответить с цитированием
Старый 21.01.2016, 23:30   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Запрос возвращает один результат – сумму значений COUNT(1) из двух таблиц (AS `all`).
Дальнейший же код пытается получить два результата из этого запроса – $row[0], $row[1].
Вроде вполне очевидно, в чем тут нестыковка.
Andkorol вне форума Ответить с цитированием
Старый 21.01.2016, 23:37   #5
ma777
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 8
По умолчанию

Можете пожалуйста подсказать в чём, голова уже кругом идёт - 2-е сутки не могу реализовать
ma777 вне форума Ответить с цитированием
Старый 21.01.2016, 23:41   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Да нечего тут подсказывать.
Нужна сумма значений COUNT(1) из двух таблиц – так она находится в $row[0].
$row[1] в данном результате запроса не существует.
Всё.
Andkorol вне форума Ответить с цитированием
Старый 21.01.2016, 23:43   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если два поля нужно, то засунь в запрос запятую вместо +
Код:
SELECT (SELECT COUNT(1) FROM `t2` WHERE `img`='фото') AS 'aaa',
       (SELECT COUNT(1) FROM `t1`) AS 'all'
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.01.2016, 23:55   #8
ma777
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Да нечего тут подсказывать.
Нужна сумма значений COUNT(1) из двух таблиц – так она находится в $row[0].
$row[1] в данном результате запроса не существует.
Всё.
Без $row[1] запрос вообще ломается.

Цитата:
Сообщение от Аватар Посмотреть сообщение
Если два поля нужно, то засунь в запрос запятую вместо +
Код:
SELECT (SELECT COUNT(1) FROM `t2` WHERE `img`='фото') AS 'aaa',
       (SELECT COUNT(1) FROM `t1`) AS 'all'
А так выводит с 1-й ноль, хотя должно быть 400; 2-й как и есть.

Не хочет выдавать кол-во именно с td2.
ma777 вне форума Ответить с цитированием
Старый 22.01.2016, 00:00   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от ma777 Посмотреть сообщение
Без $row[1] запрос вообще ломается
Бред.
$row[1] непосредственно к самому запросу не имеет отношения – и «сломать» запрос не может в принципе.
Скорее всего, код правится «методом тыка», а не осознанно – отсюда и все проблемы.
Andkorol вне форума Ответить с цитированием
Старый 22.01.2016, 00:11   #10
ma777
Новичок
Джуниор
 
Регистрация: 21.01.2016
Сообщений: 8
По умолчанию

Ломается в смысле вообще не выводит ни какого числа:
PHP код:
<?php
$link 
mysqli_connect("localhost""""""");
/* проверка подключения */
if (mysqli_connect_errno()) {
    
printf("Не удалось подключиться: %s\n"mysqli_connect_error());
    exit();
}
$query "SELECT (SELECT COUNT(1) FROM `t2` WHERE `img`='фото') + (SELECT COUNT(1) FROM `t1`) AS 'all'";
$result mysqli_query($link$query);
/* обычный массив */
$row mysqli_fetch_array($resultMYSQLI_NUM);
printf ("%s %s\n"$row[0]);
/* закрываем подключение */
mysqli_close($link);
?>
Не могу вкурить в чём дело
ma777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести данные из двух таблиц Shouldercannon PHP 30 31.10.2013 04:38
Объединение записей из двух таблиц DIMASIKXXX32 БД в Delphi 5 25.02.2013 23:40
Сравнение двух таблиц и вычленение только уникальных записей DenimTornado Microsoft Office Excel 6 03.08.2011 10:24
Запрос на сравнение записей двух таблиц. papos SQL, базы данных 0 25.09.2010 12:31
sql запрос на выборку записей из двух связанных таблиц Люсьен БД в Delphi 9 20.04.2009 16:07