-
Posts
358 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Posts posted by bgraf
-
-
Большое всем спасибо
-
Я изменил описание вопроса
Добрый день!
Есть две таблицы, одна с данными компании где id номер компании, а вторая это картинки этой компании где для одной компании (id) может быть несколько записей.
Мне надо получить из первой компании все данные, а из второй мне надо на каждую компанию получить три ее картинки (желательно случайные в пределе количества картинок этой компании).
Подскажите как правильно решать данную задачу, не перегружая сервер.
Спасибо Вам всем!ок. покажите пример кода, который у вас есть. я вас отлично понял)
нет примера, забудьте про то что я писал про два селекта и так далее.
две таблицы, одна назание компании вторая картинки, у одной компании много картинок, нужно вытащить компанию и три случайные картинки у этой компании ну или на крайней случай просто три картинки
ок. покажите пример кода, который у вас есть. я вас отлично понял)
может быть и возможно сделать то что вы хотите. преобразование из строк в поля. но я за всю практику такого невстречал))) в два запроса сделайтеТ.е. делаю селект по компаниям и селект по картинкам.
картинки засовываю в массив, выбераю в нем три случайные картинки для всех компаний.
Потом бегу по первой таблице и проверяя id компании вытаскиваю картинки из массива
так???
-
У вас насколько большие таблицы? если мелкие, то смысла нет заморачиваться этим. в мелких таблицах скорость высокая. можете даже проверить с помощью microtime
Но, если все же хотите ускорить, в mysql специально для этого придумали индексирование данных
пока не большие но потом будут шие и посещаемость надеюсь несколько тысяч в день.
Вы скажите как правильно делать если у одного id одной таблицы есть множество записей в другой.
Скорее всего Вы с талкивались с такими задачами
может мы друг друга не поняли.
я не знаю как сделать , мне бы пример или объяснения как решить задачу
-
Вы его не перегрузите, главное индексы расставьте
спасибо, но я не перегружу сервер делая что? я прошу вас подсказать как решаются данные задачи
-
Добрый день!
Есть две таблицы, одна с данными компании где id номер компании, а вторая это картинки этой компании где для одной компании (id) может быть несколько записей.
Мне надо получить из первой компании все данные, а из второй мне надо на каждую компанию получить три ее картинки (желательно случайные в пределе количества картинок этой компании).
Подскажите как правильно решать данную задачу, не перегружая сервер.
Спасибо Вам всем! -
спасибо за ссылку
SELECT *FROM tbl_company as namesINNER JOIN tbl_products as products on products.uniq_id = names.uniq_idполучаю количество строк равное количеству товаровне очень то что я хочумне надо все компании и для каждой из них по ТРИ товара -
Простите, я ничего не понял.и что не так? мы меняем селект, идем к контроллеру, в нем забираем выбранынй селект идем в модель в ней создаем запрос на получении инфы о компании и запрос на продукты компании, профит. или 2 запроса это слишком много? Не переживайте бетрегзз не сделаете
-
Здравствуйте!
Помогите создать правильно SELECT.
Есть две таблицы:
tbl_company
id_company int
name_company varchar
title_company varchar
about_company text
tbl_products
id_company int
id_product int
name_product varchar
url_product varchar
Задача сделать запрос, который принесет все данные о компании и три товара этой компании. Не хочется делать запрос по компании, а потом бежать и делать компания х 3 селекта, слишком много запросов.
Спасибо!
-
Может я прав, но задача именно в том чтобы выдать количество товаров подходящих под поиск посетителя.У ТС думаю вообще задача не правильно поставлена.
А какая разница во времени между Джоин и экзист?
Как то вы заморочились ...В этом случае сработает один или два и три условия а мне надо чтобы сработали только три условия показать товары которые отвечают всем трём или не показывать этот товар
SELECT DISTINCT *FROM table t1LEFT JOIN table t2 ON (t2.product_id = t1.product_id)LEFT JOIN table t3 ON (t3.product_id = t1.product_id)WHERE t1.id_propertie = 100 AND t1.select_value = 2 AND t2.id_propertie = 200 AND t2.select_value = 1 AND t3.id_propertie = 300 AND t3.select_value = 8
Если таблица товаров большая, то по идее может быть имеет смысл использовать EXISTS, например
SELECT * FROM table t
WHERE
EXISTS (SELECT 1 FROM table t1 WHERE t.product_id = t1.product_id AND t1.id_propertie = 100 AND t1.select_value = 2)
AND EXISTS (SELECT 1 FROM table t2 WHERE t.product_id = t2.product_id AND t2.id_propertie = 100 AND t2.select_value = 2)
AND EXISTS (SELECT 1 FROM table t3 WHERE t.product_id = t3.product_id AND t3.id_propertie = 100 AND t3.select_value = 8)
заодно уберем DISTINCT.
Если пары id_propertie и select_value встречаются только по одному разу, можно сделать через подзапрос
SELECT product_id FROM table t
WHERE
(
SELECT product_id FROM table t1
WHERE
(t1.product_id AND t1.id_propertie = 100 AND t1.select_value = 2)
OR (t1.product_id AND t1.id_propertie = 100 AND t1.select_value = 3)
OR (t1.product_id AND t1.id_propertie = 100 AND t1.select_value = 8)
HAVING count(product_id) =3
) t2
WHERE t.product_id = t2.product_id
Если требуется показать колоичество записей в выборке, но не хочется выполнять громоздние запросы два раза - сохраните результат поиска во временной таблице, в пользователю покажите таблицу из нее и количество записей в ней.чтобы не открывать новую тему, дополню свой вопрос.
селект, который я вояю будет достаточно громоздкий, и еще он будет использовать LIMIT по количеству товаров показываемых на странице.
к этому хозяйству, хотелось бы показать пользователю, сколько товаров нашлось по его запросу.
использовать mysqli_num_rows не могу из за LIMIT (всегда максимальное число будет равняться этому ограничению), а использовать count(*) значит нагрузить сервер еще раз этим сложным запросом, можно не использовать LIMIT и тогда шаманить и прыгать по принесенному результату селект, но это больше похоже на го...код(мне кажется).
Как бы Вы поступили на моем месте, спасибо всем за мнение!!!
Подскажите а как сохранить во временной таблице? Квери приносит результат уже с лимитом
Согласен что это плохо но у меня нет возможности строить процедуру, с ней было бы проще
1. Есть CALC_FOUND_ROWS или как-то такчтобы не открывать новую тему, дополню свой вопрос.
селект, который я вояю будет достаточно громоздкий, и еще он будет использовать LIMIT по количеству товаров показываемых на странице.
к этому хозяйству, хотелось бы показать пользователю, сколько товаров нашлось по его запросу.
использовать mysqli_num_rows не могу из за LIMIT (всегда максимальное число будет равняться этому ограничению), а использовать count(*) значит нагрузить сервер еще раз этим сложным запросом, можно не использовать LIMIT и тогда шаманить и прыгать по принесенному результату селект, но это больше похоже на го...код(мне кажется).
Как бы Вы поступили на моем месте, спасибо всем за мнение!!!
2. Сложные запросы — плохо. Подумате, возможно, стоит упростить.
-
чтобы не открывать новую тему, дополню свой вопрос.
селект, который я вояю будет достаточно громоздкий, и еще он будет использовать LIMIT по количеству товаров показываемых на странице.
к этому хозяйству, хотелось бы показать пользователю, сколько товаров нашлось по его запросу.
использовать mysqli_num_rows не могу из за LIMIT (всегда максимальное число будет равняться этому ограничению), а использовать count(*) значит нагрузить сервер еще раз этим сложным запросом, можно не использовать LIMIT и тогда шаманить и прыгать по принесенному результату селект, но это больше похоже на го...код(мне кажется).
Как бы Вы поступили на моем месте, спасибо всем за мнение!!!
-
В этом случае сработает один или два и три условия а мне надо чтобы сработали только три условия показать товары которые отвечают всем трём или не показывать этот товар
Как то вы заморочились ...
SELECT DISTINCT *FROM table t1LEFT JOIN table t2 ON (t2.product_id = t1.product_id)LEFT JOIN table t3 ON (t3.product_id = t1.product_id)WHERE t1.id_propertie = 100 AND t1.select_value = 2 AND t2.id_propertie = 200 AND t2.select_value = 1 AND t3.id_propertie = 300 AND t3.select_value = 8
не то слово заморочился, но задача показать те товары, которые отвечаю запросу и если есть 3-4-10 условий то товары должны отвечать всем или он не подходит, на том и стою ))))))) Вам огромное спасибо за ответы, пробую, тружусь, если будут еще мысли буду признателен Вам!!!!
-
В этом случае сработает один или два и три условия а мне надо чтобы сработали только три условия показать товары которые отвечают всем трём или не показывать этот товарВсе вам правильно по-ходу написали, используйте OR
(`id_propertie` = 100 AND `select_value` = 2)OR(`id_propertie` = 200 AND `select_value` = 1)OR(`id_propertie` = 300 AND `select_value` = 8)
Как бы только запрос не получился жирным как Ж орангутанга -
хм даже предположить не могу как составить такой запрос
у меня есть две таблицы одна t1 в которой данные товара и перечень общих для всех товаров проперти и вторая t2 таблица в которой все проперти
вот теперь делаем
select *
from t1
inner join t2 on t1.id_product = t2.id_product
where t1.product_style = 3
and t2.propertie_product = 99 and t2.value = 3
а вот подскажите куда здесь еще left join вставить
спасибо Вам
-
Дело в том ,что у product может быть несколько properties и соответственно values ,мне надо вытащить все products, которые отвечают этим нескольким условиям сразу ,а не одному из них
вот такой вариант
id_product id_propertie select_value
10011111 98 3
20022222 98 3
10011111 75 2
20022222 75 4
надо показать все id_product у которых id_propertie = 98 а select_value = 3 и id_propertie = 75 а select_value = 4
исходя из моей задачи я должен получить только id_product = 20022222
как сделать такой селект -
OR - или
в таком случае будет выбор пары а мне надо что бы все условие выполнены
-
Добрый день!
Есть таблица
id_product int
id_propertie int
select_value int
Мне нужно сделать select в котором может быть несколько пар, я имею ввиду
id_propertie = 100 and select_value = 2
и
id_propertie = 200 and select_value = 1
и
id_propertie = 300 and select_value = 8
я дел так (id_propertie = 100 and select_value = 2) and (id_propertie = 200 and select_value = 1) and (id_propertie = 300 and select_value = 8)
))не работает
смысл в том, что из таблицы надо достать все id_product, в которых есть все условия по парно.
Спасибо большое за помощь!
-
Спасибо, не утешающий ответ
А в чём проблема? Я просто из вашего запроса не понимаю ни структуры базы, ни связей в ней и что вообще там к чему. Плюс, конечно, надо брать и на реальных данных смотреть как и что будет работать. А так я, конечно, дал просто общие советы.
Да нет просто я думал избежать многочисленных селектов. Я так понимаю если мне надо 9-ть случайных товаров по одному от девяти компаний мне нужно сделать девять селектов и через код делать случайный товар и потом делать ещ запрос или один запрос много кода а потом еще запрос чтобы получить все данные по товару
мне предложили добавьте поле RAND() и отсортируйте по нему.
получается быстро но пока у меня не много товаров да еще и проблема что если я добавляю ORDER BY page_up.date_page_up DESC то все рушется а мне сортировка по date_page_up обязательна без нее нет смысла всей этой затеи
-
ORDER BY RAND() и GROUP BY в помощь. Но это плохая идея по скорости, тем более если будет много товаров. Ещё один вариант: COUNT + LIMIT %случайное_число%, 1 и много простейших запросов. Потом всё пробуете прогнать через EXPLAIN и смотрите что из этого нормально работает.
Спасибо, не утешающий ответ
-
Здравствуйте!
У меня есть компании которые размещают свои товары, у товаров есть один из параметров цвет.
Мне надо выбрать один случайный товар у каждой из 9 первых компаний, цвет которого соответствует запросу.
Вот мой пример запроса в котором я получаю компании и их товары с соответствующим цветом, но как теперь случайным образом выбрать один товар у каждого из 9-ти не знаю, помогите пожалуйста.
Записей будет очень много более 3-4 миллионовSELECT products.`uniq_id` , products.id_product, products.article_product, page_up.date_page_upFROM images_products AS products, products_color AS color, data_page_up AS page_upWHERE products.uniq_id = page_up.uniq_idAND products.id_product = color.id_productAND color.colors_nameIN ( 1, 4, 12, 15 )GROUP BY products.id_productORDER BY page_up.date_page_up DESC
-
-
Здравствуйте!
Помогите разобраться, вот пример меню http://svetilnik-online.ru/
Там есть картинка
background-image: url(../images/menu_tab.png);
которая меняет, как я понимаю, размер в зависимости от длины текста меню.
Подскажите как они это делают.
Спасибо!
-
Здравствуйте!
Не думаю,что можно выдернуть таким образом, может попробовать сделать дополнительное скрытое поле на каждую ячейку, данные которой понадобятся, и потом путем getElementById этого поля получать данные и обрабатывать их.
-
Может просто использовать сессию? По поводу ActionScript, мне кажется будут проблемы под Apple
-
Если не ошибаюсь, так как все происходит на стороне клиента, то очищается само, впрочем как и в php на стороне сервера
а в c, c++, java при закрытии программы очищали память, опять же если не ошибаюсь, последний раз что-то писал на c++ много лет назад
Браузер сам автоматически удаляет мусор очищая память. На каждый объект есть ссылка, и в случае если нет ссылки то происходит очищение из памяти
css присвоение объекту класса
in HTML Coding
Posted
Здравствуйте.
у меня есть два класса
.text_color_blue{ color: #37c1d0; } .text_color_white{ color: #FFFFFF; }
и есть такая структура
как сделать так чтобы сначала <a> принимал класс text_color_blue а при наведении на него менялся на text_color_white
знаю что по средством js я просто меняю у объекта класс но как можно обойтись css и присвоить <a> сначало один уже существующий класс а при hover заменить его
спасибо всем