Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос для MySQL 3.23.52 
:(
    Опции темы
Гость_Victor
Дата 5.5.2005, 18:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здраствуйте. Есть такая задача - нужно из таблицы выбрать рандомом по одному товару от каждого производителя. Я пишу вот так
Код

SELECT 
    item_id,
    vendor_id
FROM
    vendors_items    
GROUP BY
    vendor_id    
ORDER BY
    item_id;

Но проблема в том, что если в таблице больше одного товара у производителя, то показываться будет один и тот же товар, а они должны меняться случайным образом... Помогите, плииз...
  Вверх
Secandr
Дата 5.5.2005, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



Код

SELECT 
    item_id,
    vendor_id
FROM
    vendors_items    
GROUP BY
    vendor_id   
ORDER BY RAND();



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Kesh
Дата 5.5.2005, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



AFAIK
Код

SELECT 
    `item_id`,
    `vendor_id`,
    RAND() as `rnd_field`
FROM
    `vendors_items`
GROUP BY
    `vendor_id`   
ORDER BY `rnd_field`;



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Guest
Дата 6.5.2005, 16:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо за ответы, но увы, не все так просто...
Код

SELECT 
    item_id,
    vendor_id
FROM
    vendors_items    
GROUP BY
    vendor_id  

Возращает всегда одни и те же значения, а
Код

ORDER BY RAND()

всего лишь перемешивает эти записи...
А мне нужно, чтобы менялся их состав...
  Вверх
Secandr
Дата 6.5.2005, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



Можно пояснить?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Guest
Дата 6.5.2005, 18:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Конечно можно, есть ~10 производителей, каждый из которых производит ~ 50 видов товара. Привязка производителя и товара хранится в таблице vendors_items. Нужно сделать выборку ~ 10 товаров - по одному товару от каждого производителя.
  Вверх
Guest
Дата 6.5.2005, 18:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Совсем забыл, нужно сделать выборку не какого-то конкретного вида товара у производителя, а чтобы вид продукции каждого производителя менялся случайным образом, т.е. после каждого запроса мы получали разный набор продукции
  Вверх
Secandr
Дата 6.5.2005, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



Можно попробовать: структуру трёх таблиц в студию


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Guest
Дата 8.5.2005, 17:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
структуру трёх таблиц в студию

В смысле какие таблицы есть?..
Код

CREATE TABLE vendors
(
    vendor_id int AUTO_INCREMENT PRIMARY KEY,
    name varchar(100) NOT NULL,
    phone varchar(100) NOT NULL,
    priority smallint DEFAULT 0,
    address varchar(255),
    note text,
    city_id int NOT NULL REFERENCES cities(id)
);

CREATE TABLE items
(
    item_id int AUTO_INCREMENT PRIMARY KEY,
    name varchar(255) NOT NULL,
    description text,
    popular tinyint(1) DEFAULT 0
);

CREATE TABLE vendor_items
(
    item_id int NOT NULL REFERENCES items(item_id),
    vendor_id int NOT NULL REFERENCES vendors(vendor_id),
    price float(5,2) NOT NULL,
    PRIMARY KEY (item_id, vendor_id)
);

  Вверх
Secandr
Дата 11.5.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



И что в итоге получить нужно?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.