Спасибо, что уделили мне время на чтение.
У меня есть 2 таблицы users и config.
Таблица users в виде нескольких полей: id, client_id, site_id, имя пользователя, адрес электронной почты, пароль Из таблицы пользователей я получаю всех пользователей, у которых есть определенный идентификатор клиента, который передается через $ _SESSION, и он работает нормально, я получаю всех пользователей с определенного client_id
SELECT * FROM users WHERE client_id = '".$_SESSION['c_id']."'
Это возвращает пример с 2 пользователями:
++id++ ++client_id++ ++site_id++ ++username++ ++email++ ++password++
1 1 1,2 test1 1@1.com pass
2 1 1 test2 2@1.com pass
Из таблицы конфигурации мне нужно получить мету (разделенную запятую имени сайта) через site_id, переданный от пользователей, и через поле имени, которое определяет мету (s_name),Желаемый результат из этой таблицы - мета в 1 строке, возможно, с использованием concat ().Таблица конфигурации в виде нескольких полей:
++id++ ++client_id++ ++site_id++ ++name++ ++meta++
1 1 1 s_name Site 1 Name
2 1 2 s_name Site 2 Name
Конечным результатом будет таблица пользователей, заменяющая site_id на разделенное запятыми мета-поле таблицы конфигурации
++id++ ++client_id++ ++site_id++ ++username++ ++email++ ++password++
1 1 Site 1 name, test1 1@1.com pass
Site 2 Name
2 1 Site 1 name test2 2@1.com pass
Приветствуются советы, должен ли я использовать 1 сложный запрос mysqli или 2 запроса с 2 циклами?
Пока я пытаюсь выполнить 2 запроса, я не могу получить второй запрос для объединения имени сайта через запятую:
$client_id_query = "SELECT * FROM user WHERE client_id = '".$_SESSION['c']."'";
$client_id_result = mysqli_query($hotelconnection->hotelconn,$client_id_query);
if(mysqli_num_rows($client_id_result) > 0){
while ($row_client_id = mysqli_fetch_array($client_id_result) ){
$explode_user_site_id = $row_client_id['site_id'];
$explode_user_site_id = explode(',', $explode_user_site_id);
foreach($explode_user_site_id as $unique_id){
$site_name_query = "SELECT GROUP_CONCAT(meta SEPARATOR ',') AS website_name FROM config WHERE name = 'website_name' AND client_id = '".$row_client_id['client_id']."' AND site_id = '".$unique_id."'";
$site_name_result = mysqli_query($hotelconnection->hotelconn,$site_name_query);
if(mysqli_num_rows($site_name_result) > 0){
while ($row_site_name = mysqli_fetch_array($site_name_result) ){
// Result is not concated in 1 row
++id++ ++client_id++ ++site_id++ ++username++ ++email++ ++password++
1 1 Site 1 name test1 1@1.com pass
1 1 Site 2 Name test1 1@1.com pass
2 1 Site 1 name test2 2@1.com pass
}
}
}
}
}