Подскажите по MYSQL

Тема в разделе "Веб-разработка", создана пользователем ЖИВУ, 11 янв 2011.

Статус темы:
Закрыта.
  1. ЖИВУ

    ЖИВУ На форуме с: 25 дек 2010 Сообщения: 32

    Есть таблица такого типа:

    tovar cena magazin
    a 10 2
    b 10 2
    c 20 2
    d 20 2
    e 20 3
    f 10 4
    g 20 2
    h 20 1


    SELECT tovar, count(cena) AS ccena WHERE cena=10 OR cena=20 GROUP BY magazin HAVING ccena>1

    результат = magazin №2

    данный запрос выполняет требуемую задачу, но mysql это делает следующим образом:

    находит все cena=10 потом все cena=20, то есть перебирает всю базу, а затем группирует результат.

    Мне нужно, чтобы mysql обрабатывал запрос следующим образом:
    отобрал все магазины с cena=10, потом проверил наличие этих магазинов с cena=20.

    Как мне это сделать? :a11:
  2. RU4NIK

    RU4NIK Гость На форуме с: Сообщения: 0

    Задача не полностью написана.
  3. Kovtun

    Kovtun SEO На форуме с: 2 сен 2009 Сообщения: 2.845

    RU4NIK, а чего не хватает? Почему нельзя поделиться с ТС подробнее?
  4. boss

    boss Гость На форуме с: Сообщения: 0

    Может попробовать сначала извлечь из базы одно, затем другое, а потом сравнить. При совпадении, правда ,при отсутствии совпадений ложь.
    Или я не понял цели которой нужно достичь в запросе .
    По вашему примеру запрос так и сработает .
    Мне кажется необходимо ещё пара условий.

    Попробую написать запрос и создать пример у себя, как будет время.
    Что получиться выложу. И вы информацию постарайтесь поподробнее изложить.

    //Задача поставлена нормально. //Chudenkov
  5. Chudenkov

    Chudenkov На форуме с: 12 ноя 2010 Сообщения: 1.915

    Думаю что так (возможно косяк с синтаксисом):

    IF((count=10 THEN SELECT tovar, count(cena) AS cost WHERE cena=10) ELSE tovar, count(cena) AS cost WHERE cena>19) FROM TABLENAME GROUP BY magazin HAVING cost>1

    Подсказка
  6. boss

    boss Гость На форуме с: Сообщения: 0

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS cost WHERE cena=10) ELSE tovar, count(cena) AS cost WHERE cena>19) FROM TABLE' at line 1
  7. Chudenkov

    Chudenkov На форуме с: 12 ноя 2010 Сообщения: 1.915

    Я показал идею, а не показал как именно решается проблема.
  8. boss

    boss Гость На форуме с: Сообщения: 0

    Пытаюсь решить проблему в свободное время.:a4:
Статус темы:
Закрыта.