Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
3 / 3 / 4
Регистрация: 04.02.2013
Сообщений: 211
1

Получение одним запросом данные из двух разных таблиц PDO

15.09.2015, 23:44. Показов 2331. Ответов 5
Метки нет (Все метки)

Как объединить два запроса, чтобы выводились все записи из table1 с возможность получить данные еще и из дополнительной таблицы table2.
Код ниже выводит только одну запись.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
$pg1= 10;
$pg2=30;
$stmt = $PDO->prepare("SELECT * FROM `teble1` WHERE `status`=? AND `k_sum`>`k_price` ORDER BY `id` DESC LIMIT ".$pg1.", ".$pg2."");
$stmt->execute(array(1));
$stmt->setFetchMode(PDO::FETCH_LAZY);
while($ROW = $stmt->fetch())
{
    $USER = $_SESSION['user'];
    $stmt = $PDO->prepare("SELECT * FROM `teble2` WHERE `id_t`=? AND `s_user`=?");
    $stmt->execute(array($ROW->id,$USER));
    $stmt->setFetchMode(PDO::FETCH_LAZY);
    $ROW_1 = $stmt->fetch();
    
    echo '<table width="100%" border="0" cellspacing="2" cellpadding="2">';
      echo '<tr>';
        echo '<td>';
            echo '№ '.$ROW->id;
        echo '</td>';
        echo '<td>';
            echo 'Цена : '.$ROW->k_sum;
        echo '</td>';
        echo '<td>';
            if($ROW_1==true)
            {
                if($ROW_1->stat==1)
                {
                    echo 'заказ создан <br />';
                }
                if($ROW_1->stat==2)
                {
                    echo 'Заказ в обработке <br />';
                }
                if($ROW_1->stat==3)
                {
                    echo 'Заказ оплачен <br />';
                }
                echo 'User : '.$ROW_1->user_pay;
            }
            else
            {
                echo 'сделать заказ';
            }
        echo '</td>';
      echo '</tr>';
    echo '</table>';
 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.09.2015, 23:44
Ответы с готовыми решениями:

Как одним запросом получить данные из разных таблиц?
Есть таблица со статьями, к статье могут быть прикреплены теги и файлы. есть отдельные таблицы...

Как одним запросом собрать данные из разных таблиц на примере базы данных?
не могу сдвинуться с мертвой точки: есть заполненные таблицы: &quot;приход&quot;, &quot;расход&quot;, &quot;отчисления&quot;....

Получение последней записи из 50 таблиц одним запросом
Всем привет. Как получить последнюю запись из 50 таблиц одни запросом

Одним запросом из двух таблиц
Добрый день. Допустим у меня есть две таблицы. Первая таблица (apart) - таблица с квартирами....

5
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16828 / 6706 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
16.09.2015, 08:20 2
используйте JOIN-ы.
SQL
1
2
3
4
SELECT * FROM `teble1` `t1`
JOIN `teble2` `t2` ON `t2`.`id_t` = `t1`.`id`
WHERE `t1`.`status`=? AND `t1`.`k_sum`>`t1`.`k_price` AND `t2`.`s_user`=?
ORDER BY `t1`.`id` DESC LIMIT ".$pg1.", ".$pg2
0
3 / 3 / 4
Регистрация: 04.02.2013
Сообщений: 211
16.09.2015, 10:22  [ТС] 3
немного не то в данном случае выводится запись из первой если присутствует запись в второй, а нужно чтобы из первый выводилось всегда не зависимо есть ли запись в 2 таблице . но если есть запись в 2 таблице то к выведенному добавится дополнительная информация из 2 таблицы

то есть если false в таблице 2 то в списке у некоторых появится кнопка заказать , а если TRUE то берем из определенной ячейки статус и выводим
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if($ROW->stat==1)
                {
                    echo 'заказ создан <br />';
                }
                if($ROW->stat==2)
                {
                    echo 'Заказ в обработке <br />';
                }
                if($ROW->stat==3)
                {
                    echo 'Заказ оплачен <br />';
                }
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16828 / 6706 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
16.09.2015, 10:23 4
ну тогда замените JOIN на LEFT JOIN
1
3 / 3 / 4
Регистрация: 04.02.2013
Сообщений: 211
16.09.2015, 10:38  [ТС] 5
о заработало но надо было немного перенести AND `t2`.`s_user`=? поставить его после ON `t2`.`id_t` = `t1`.`id`

SQL
1
2
3
4
SELECT * FROM `teble1` `t1`
LEFT JOIN `teble2` `t2` ON `t2`.`id_t` = `t1`.`id` AND `t2`.`s_user`=?
WHERE `t1`.`status`=? AND `t1`.`k_sum`>`t1`.`k_price`
ORDER BY `t1`.`id` DESC LIMIT ".$pg1.", ".$pg2
0
3 / 3 / 4
Регистрация: 04.02.2013
Сообщений: 211
15.03.2016, 22:29  [ТС] 6
подскажите как создать запрос чтобы выводилось только те записи из teble1 о которых нет данных в teble2 и сделать подсчет (коичество) таких записей

Добавлено через 39 минут
вопрос решен данным примером

PHP
1
SELECT COUNT(id) AS cont FROM teble1 WHERE id NOT IN(( SELECT id_tem FROM teble2 WHERE user='".valid($_SESSION["user"])."'))"
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2016, 22:29

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Sqlite3 Данные из 3 таблиц одним запросом
Добрый день. Нужна помощь гуру sql запросов. Работаю с sqlite3. Пытаюсь вытащить данные из 3...

Пожалуйста нужно разобраться с запросом Mysql! Одним запросом из двух таблиц / MySQL
У меня на главной странице существует вот такой запрос (он ниже), который вытаскивает из таблицы...

Выборка из двух таблиц одним запросом без сокращения записей
Здравствуйте. Есть схема в БД PostgreSQL с двумя таблицами, из которых надо сделать выборку...

Удаление связанных между собой строк из двух таблиц одним запросом
Здравствуйте. На данный момент имею вот такой код: if ((isset($_SESSION) and...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.