Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

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


Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2021, 11:41   #1
LeoSkar
Новичок
Джуниор
 
Регистрация: 05.01.2021
Сообщений: 3
По умолчанию Нужно сделать выборку на каждую итерацию другой выборки из mySQL

Привет! Возникла проблема следующего характера!
У меня есть выборка из базы данных, которая через for перебирает каждый элемент выборки ( id пользователя из базы и имя номер телефона) и на каждую такую итерацию мне нужно найти в другой таблице номер пользователя с этим id если в выборке его нет (Да id пользователя есть обеих таблицах, но во второй выборке не видит параметры.
Код:
include("php\DataBase\base-connect.php");
$innerIdChannel=$_GET['rows'];
$query = "SELECT * FROM users_{$innerIdChannel} ";

$result = mysqli_query($connect,$query);
mysqli_commit($connect);
for ($i=0; $i < mysqli_num_rows($result); $i++)
{
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);


    $idUser=$row['idUser'];
    $firstName=$row['first_name'];
    $last_name=$row['last_name'];
    $username=$row['username'];
    $phone=$row['phone'];

        //$query = "SELECT * FROM messages_{$innerIdChannel} where userId=={$row['idUser']}";




    if ($row['phone']==null)
    {
      //Здесь нужно искать номер в другой таблице по $idUser 

    }
Ошибка в том, что внутренний SQL запрос говорит будто нет у него параметров типа idUser и вообще ничего не возвращает, хотя в отдельном скрипте этот запрос работает.
LeoSkar вне форума Ответить с цитированием
Старый 05.01.2021, 12:37   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 3,826
По умолчанию

1. Запросы в цикле - это абсолютное зло. Их не должно быть в принципе
2. Создавать отдельно таблицы под каждого пользователя - не меньшее зло, чем и п 1. Таблица должна быть одна
3. При нормальных таблицах - все делается одним запросов с JOIN ом

в общем случае как-то так
Код:
SELECT тут нужные поля из нужных таблиц FROM users AS u
  LEFT JOIN messages AS m ON m.userId = u.userId
  WHERE  ваше условие

Последний раз редактировалось ADSoft; 05.01.2021 в 12:40.
ADSoft вне форума Ответить с цитированием
Старый 05.01.2021, 12:56   #3
LeoSkar
Новичок
Джуниор
 
Регистрация: 05.01.2021
Сообщений: 3
По умолчанию

ADSoft, Я понимаю всю корявость момента. У меня каждая таблица содержит от 500 до 1000 пользователей определенной группы и мне нужно заходя в каждую группу видеть список пользователей этой группы с ссылкой на все сообщения каждого пользователя (Это уже в Web приложении) поэтому я и пытаюсь как могу ) потому что тупенький в SQL запросах сложнее SELECT FROM WHERE ))) Спасибо за Ваш ответ но я все равно не понял как мне получать множественные значения по каждому значению основной выборки....

Upd.
Почитал про Left JOIN Спасибо )))) Разобрался ))

Последний раз редактировалось LeoSkar; 05.01.2021 в 13:04. Причина: Upd
LeoSkar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Программа берет 1-ю строку из файла. Нужно удалить все точки, и каждую первую букву всех слов сделать заглавной. igrok111 Общие вопросы Delphi 5 13.10.2015 17:04
Запрос к БД MySQL (сложности выборки) Phantom SQL, базы данных 7 26.05.2013 17:58
Что нужно сделать чтобы программа запускалась не с Fom1 а с другой формы Form2 ...? Nazario Общие вопросы Delphi 2 11.03.2012 13:31
Как сделать выборку по временному интервалу в MySql? victorshkoda БД в Delphi 2 05.02.2012 19:02
Нужно Сделать Слайд Шоу на jQuery и XML с MySql p7p7p7 Фриланс 0 27.11.2010 00:30


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS