есть таблицы mysql:
|------
|Столбец|Тип|Null|По умолчанию
|------
|//**id**//|int(11)|Нет|
|parent_id|int(11)|Нет|0
|title|varchar(255)|Нет|
|description|varchar(255)|Нет|
|keywords|varchar(255)|Нет|
|category_img|varchar(255)|Нет|
|seo|varchar(255)|Нет|
|---
---
|Столбец|Тип|Null|По умолчанию
|------
|//**id**//|int(11)|Нет|
|id_user|int(11)|Нет|
|id_category|int(11)|Нет|
|id_town|int(11)|Нет|
|id_region|int(11)|Нет|
|id_street|int(11)|Нет|
|home_post|varchar(255)|Нет|
|id_album|int(11)|Нет|0
|id_news|int(11)|Нет|0
|title|varchar(255)|Нет|
|title_seo|varchar(255)|Нет|
|descriotion|varchar(255)|Нет|
|img_company|varchar(255)|Нет|
|house|varchar(32)|Нет|
|text|text|Нет|
|schedule|varchar(255)|Нет|
|pause|varchar(255)|Нет|
|day_off|varchar(255)|Нет|
|contacts|varchar(255)|Нет|
|email_company|varchar(255)|Нет|
|url_company|varchar(255)|Нет|
|valid_status|int(1)|Нет|0
|------
|Столбец|Тип|Null|По умолчанию
|------
|//**id**//|int(11)|Нет|
|id_town|int(11)|Нет|
|name|varchar(32)|Нет|
== Дамп данных таблицы region
|Столбец|Тип|Null|По умолчанию
|------
|//**id**//|int(11)|Нет|
|id_company|int(11)|Нет|
|id_user|int(11)|Нет|
|title|varchar(255)|Нет|
|text|text|Нет|
|reiting|int(11)|Нет|
== Дамп данных таблицы rewards
|------
|Столбец|Тип|Null|По умолчанию
|------
|//**id**//|int(11)|Нет|
|name|varchar(32)|Нет|
|lastname|varchar(32)|Нет|
|secondname|varchar(32)|Нет|
|user_type|varchar(2)|Нет|
|login|varchar(32)|Нет|
|pass|varchar(32)|Нет|
|about|text|Нет|
|user_img|varchar(255)|Нет|
|contacts|varchar(255)|Нет|
|id_town|int(11)|Нет|
|id_region|int(11)|Нет|
|id_street|int(11)|Нет|
|home|varchar(32)|Нет|
|email|varchar(64)|Нет|
|link|varchar(255)|Нет|
|link2|varchar(255)|Нет|
|date_registration|varchar(14)|Нет|
|online_status|tinyint(1)|Нет|0
|valid_status|tinyint(4)|Нет|
== Дамп данных таблицы users
как правильно создать запрос чтоб из всех этих таблиц выводились в одной таблице все поля о компании названия города улицы, региона, и подсчет количества строк у компании?
SELECT
`rewards`.*,
`users`.`id` as `id`,
`category`.`id` AS `id_category`,
`users`.`name` as `user_name`,
`users`.`last_name` as `user_last_name`,
`company`.`title` AS `company_name`,
`category`.`title` AS `category_name`,
`town`.`name` AS `town_name`
FROM
`rewards`
LEFT JOIN `users` ON (`users`.`id` = `rewards`.`id_user`)
LEFT JOIN `company` ON (`company`.`id` = `rewards`.`id_company`)
LEFT JOIN `category` ON (`category`.`id` = `company`.`id_category`)
LEFT JOIN `town` ON (`town`.`id` = `company`.`id_town`)
WHERE
{$ВАШЕ_УСЛОВИЕ}
GROUP BY
`rewards`.`id`
попробуйте такой вариант, запрос выведет отзывы о компаниях.
Если
$ВАШЕ_УСЛОВИЕ = '`rewards`.`id_company` = 1'
то вы получите все отзывы о компании с ID 1
Самый простой и понятный способ - это субзапросы (в таблицы region, rewards и т.д.) по каждой строчке из таблицы с компаниями. Сюда же подойдут запросы с JOIN, хотя они плохо приспособлены под масштабирование данных и для новичков менее понятны.
Наиболее оптимальный вариант - последовательный запрос данных в каждой из таблиц с последующим их сопоставлением:
Выполняем запрос в таблицу с компаниями. Собираем id для субзапросов.
SELECT * FROM companies WHERE ...;
Выполняем субзапрос со всеми найденными ранее id в таблицу region, rewards и т.д.
SELECT * FROM region WHERE id_town=$1 OR id_town=$2 OR ...;
Выполняем сопоставление данных из основной таблицы с компаниями и данных, полученных из субзапросов.
В этом случае мы не посылаем в базу множество запросов и структура SQL-данных хорошо приспособлена под будущее масштабирование.
php rest api генерирует PDF в виде blob, как получить файл на фронтенде без сохранения на сервереМое решение
Решил написать свой виджет для wordpress, но столкнулся с проблемойСтандартные поля типа text/textarea при сохранении удаляют все html тэги