Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток. Если есть знающие которые могут подсказать, то у меня есть вопросик.
Для более простого объяснения сокращу поля таблицы.
Есть таблица tovar в ней колонки (id,name)
И есть таблица foto в ней колонки (id,idtovar,url,gl)
В таблице foto существует не одна запись с одинаковым idtovar, колонка gl если имеет значение 1 то это главное фото товара, у всех записей с одинаковым idtovar - gl со значением 1 встретится может только один раз а может и не встретится вообще.
К примеру:
tovar(id,name)
(1, название 1)
(2, название 2)
(3, название 3)
(4, название 4)
(5, название 5)
foto(id,idtovar,url,gl)
(1,2,url,2)
(2,2,url,2)
(3,4,url,1)
(4,4,url,2)
(5,4,url,2)
Как составить запрос, что бы выводилась только 1 запись к товару, если существует gl - 1 то вывестись должна она, если нет то любая.
Сейчас выводится примерно так при объединении:
tovar(id,name) foto(id,idtovar,url,gl)
(1, название 1) null
(2, название 2) (1,2,url,2)
(2, название 2)(2,2,url,2)
(3, название 3) null
(4, название 4) (3,4,url,1)
(4, название 4) (4,4,url,2)
(4, название 4) (5,4,url,2)
(5, название 5) null
А нужно:
(1, название 1) null
(2, название 2) (1,2,url,2)
(3, название 3) null
(4, название 4) (3,4,url,1)
(5, название 5) null
Запрос сейчас примерно такой:
("SELECT tovar*, foto* FROM tovar
LEFT JOIN
foto
ON
tovar.id = foto.idtovar
WHERE
ORDER BY tovar.id DESC LIMIT 50
");
Заранее большое спасибо за помощь!
Неактивен
Создайте пример на sqlfiddle.com
, как например тут
http://sqlfiddle.com/#!9/a6c585/1
, чтобы были таблицы и набор тестовых данных, на их основе сделаем решение.
Неактивен
deadka написал:
Создайте пример на sqlfiddle.com
, как например тут
http://sqlfiddle.com/#!9/a6c585/1
, чтобы были таблицы и набор тестовых данных, на их основе сделаем решение.
Сайт этот не видел еще, но вроде что то вышло
http://sqlfiddle.com/#!9/423df53/22
Отредактированно megavolt (05.03.2018 01:59:58)
Неактивен
http://sqlfiddle.com/#!9/423df53/47
Неактивен
Большое спасибо за ответ и за пример
Какой сложный запрос.
Даже, не разберусь пока что как он работает.
и вот совсем не пойму как при выборке работает is null - без него работает не правильно выбирается только одно фото к товару, но что он говорит тогда?
f.`idtovar` is null - вроде выбор по idtovar
Неактивен
Вы объяснение в статье смотрели? (я вряд ли смогу расписать понятней)
выполните
Неактивен
Неактивен
я имел в виду выполнить только
Неактивен
Немного расширил то что делали выше.
Добавил категории к товарам.
Вывести все товары одной категории, не составляет труда.
Но вот решил создать характеристики товара и опять у меня все запуталось.
Как мне теперь вывести товары которые имеют цвет: зеленый и форму: квадрат
В таблицах сделал так:
Отредактированно megavolt (05.03.2018 22:15:20)
Неактивен
Неактивен
vasya написал:
https://sqlinfo.ru/forum/viewtopic.php?id=5324
Спасибо.
Вроде бы получилось, но не совсем то.
Зеленый у меня товар под ид 2 и 1
Квадрат у меня товар под ид 3 и 2
Собственно должны показаться товары с ид
1,2,3 а показывается только под ид 2 и 3.
Думал что запрос в той теме что ссылку давали удовлетворяет запросы только по всем значением из массива, но если ищу, что то под одним значением, то ли зеленый, то ли квадрат вообще не чего не показывает.
http://sqlfiddle.com/#!9/a12e51/29
Отредактированно megavolt (06.03.2018 03:31:26)
Неактивен
http://sqlfiddle.com/#!9/a12e51/51
Неактивен
А для одного значения почему не чего не выводит?
http://sqlfiddle.com/#!9/a12e51/96
Я получается не правильно выразился
написал:
Как мне теперь вывести товары которые имеют цвет: зеленый и форму: квадрат
А надо было:
Как мне теперь вывести товары которые имеют цвет: зеленый ИЛИ форму: квадрат
Неактивен
megavolt написал:
Как мне теперь вывести товары которые имеют цвет: зеленый ИЛИ форму: квадрат
Неактивен
Доброго времени суток. Снова проблемка у меня.
При выводе разделов характеристик (Цвет, Форма) и их свойств (Красный, Зеленый, Синий, Квадрат,Прямоугольник)
Хотел посчитать количество товаров для каждого свойства.
Собственно посчитать получилось, но не так как нужно, нужно посчитать только те товары которые относятся к категории под id 3
Куда вписать и как не могу понять и прошу помочь(
http://sqlfiddle.com/#!9/ba39ac/1
Большое спасибо, за помощь то что была до этого. И заранее благодарю за помощь в данном вопросе.
Неактивен
если я правильно понял, то
..
left JOIN (select idharname, count(*)
from `haraktertov` join `tovar` on idtovar=tovar.id
where `cat` = 3 group by idharname ) gf
on s.id = gf.idharname
..
Неактивен