glem1337
@glem1337

Можно ли писать такой запрос или нужно объединять таблицы?

Можно ли писать запросы таким способом и уже потом их помещать в массив? Или нужно объединять таблицы?
Объединить через INNER JOIN не получается, т.к есть дополнительные поля и имена полей отличаются, и нужно искать по переменной.
Через UNION тоже не получается, т.к кол-во столбцов отличается.
Есть ли еще какие способы?
$prodCard = $pdo->prepare('SELECT * FROM models WHERE id= :id');
		$prodCard->execute(array('id'=>$id));
		$prodCard = $prodCard->fetch();


		$prodImg = $pdo->prepare('SELECT image FROM upload_images WHERE products_id= :id');
		$prodImg->execute(array('id'=>$id));
		$prodImg = $prodImg->fetchAll();


		$prodReviews = $pdo->prepare('SELECT * FROM table_reviews WHERE products_id= :id AND moderate_status=1');
		$prodReviews->execute(array('id'=>$id));
		$prodReviews = $prodReviews->fetchAll();
		
		$pdo = null;
		return array('prodCard'=>$prodCard, 'prodImg'=>$prodImg, 'prodReviews'=>$prodReviews);

Структура таблиц:

upload_images
> id
> products_id
> image

table_reviews
> id
> products_id
> name
> good_reviews
> bad_reviews
> comment
> date
> moderate_status

models
> id
> name
> category_name
> brand_name
> price
> category_id
> brand_id
> description
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 2
Sanovskiy
@Sanovskiy
Веб-разработчик с 2005 года
Как по мне у вас в коде нарушения принципа единой ответственности.
Ваш метод выбирает три коллекции разных по типу объектов.

Я рекомендовал бы разнести их по разным методам.
Ответ написан
Комментировать
@iljaGolubev
1. Если работает - то можно.
2. Почему у вас union не работает?
select 'REVIEWS', id, products_id, name,   good_reviews 
    from table_reviews
union
select 'IMAGES' , id, products_id,  image, NULL  
    from upload_images

3. Что не получается через INNER JOIN - вообще не понятно.
4. А действительно, зачем это?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 11:46
3000 руб./за проект
23 апр. 2024, в 11:38
20000 руб./за проект