За последние 24 часа нас посетили 17940 программистов и 1611 роботов. Сейчас ищут 929 программистов ...

Как объединить запрос Новичок!

Тема в разделе "MySQL", создана пользователем devid134, 16 авг 2014.

  1. devid134

    devid134 Новичок

    С нами с:
    19 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    Всем привет!
    Нужна помощь
    Вот как выглядит мой запрос в целом
    Код (Text):
    1.  
    2. -- Основная категория:
    3. (SELECT COUNT(goods_id) AS count_rows
    4.  FROM goods
    5. WHERE goods_catalog = $category AND visible='1')
    6.                
    7. UNION    
    8.  
    9. -- Подкатегория:  
    10. (SELECT COUNT(goods_id) AS count_rows
    11. FROM goods
    12. WHERE goods_catalog IN
    13. (
    14. SELECT catalog_id FROM catalog WHERE parent_id = $category
    15. ) AND visible='1')
    16.  
    17.  
    18. UNION
    19.  
    20.  
    21. -- Основная категория1:              
    22. (SELECT COUNT(goods_id) AS count_rows
    23. FROM goods
    24. WHERE goods_catalog1 = $category AND visible='1')
    25.  
    26. UNION
    27.      
    28. -- Подкатегория1:  
    29. (SELECT COUNT(goods_id) AS count_rows
    30. FROM goods
    31. WHERE goods_catalog1 IN
    32. (
    33. SELECT catalog_id FROM catalog WHERE parent_id = $category
    34. ) AND visible='1')
    Как вы уже наверное поняли он работал неправильно, мне нужно чтобы Основная категория суммировалась с Основной категорией1 и Подкатегория с Подкатегория1

    Вот что выходило если выбрать допусти Основную категорию (Подставил вместо $category=405(ID Основной категории))

    Код (Text):
    1.  
    2. -- Основная категория:
    3. (SELECT COUNT(goods_id) AS count_rows
    4.  FROM goods
    5. WHERE goods_catalog = 405 AND visible='1')
    6.                
    7. UNION    
    8.  
    9. -- Подкатегория:  
    10. (SELECT COUNT(goods_id) AS count_rows
    11. FROM goods
    12. WHERE goods_catalog IN
    13. (
    14. SELECT catalog_id FROM catalog WHERE parent_id = 405
    15. ) AND visible='1')
    16.  
    17.  
    18. UNION
    19.  
    20.  
    21. -- Основная категория1:              
    22. (SELECT COUNT(goods_id) AS count_rows
    23. FROM goods
    24. WHERE goods_catalog1 = 405 AND visible='1')
    25.  
    26. UNION
    27.      
    28. -- Подкатегория1:  
    29. (SELECT COUNT(goods_id) AS count_rows
    30. FROM goods
    31. WHERE goods_catalog1 IN
    32. (
    33. SELECT catalog_id FROM catalog WHERE parent_id = 405
    34. ) AND visible='1')
    Вот что получилось
    [​IMG]

    Теперь Подкатегория (Подставил вместо $category=404(Подкатегория))

    Код (Text):
    1.  
    2. -- Основная категория:
    3. (SELECT COUNT(goods_id) AS count_rows
    4.  FROM goods
    5. WHERE goods_catalog = 404 AND visible='1')
    6.                
    7. UNION    
    8.  
    9. -- Подкатегория:  
    10. (SELECT COUNT(goods_id) AS count_rows
    11. FROM goods
    12. WHERE goods_catalog IN
    13. (
    14. SELECT catalog_id FROM catalog WHERE parent_id = 404
    15. ) AND visible='1')
    16.  
    17.  
    18. UNION
    19.  
    20.  
    21. -- Основная категория1:              
    22. (SELECT COUNT(goods_id) AS count_rows
    23. FROM goods
    24. WHERE goods_catalog1 = 404 AND visible='1')
    25.  
    26. UNION
    27.      
    28. -- Подкатегория1:  
    29. (SELECT COUNT(goods_id) AS count_rows
    30. FROM goods
    31. WHERE goods_catalog1 IN
    32. (
    33. SELECT catalog_id FROM catalog WHERE parent_id = 404
    34. ) AND visible='1')
    И тут получилось
    [​IMG]

    И мне подсказали как решить часть проблемы (Суммировать Основные категории и положить в одну ячейку)
    Вот функция
    Код (Text):
    1.  
    2. SELECT COUNT(goods_id) AS count_rows
    3. FROM goods
    4. WHERE (goods_catalog = 405 OR goods_catalog1 = 405)  AND visible='1'
    Вот результат:
    [​IMG]

    И я попытался провернуть такое же с Подкатегорией но ка вы видели все безуспешно
    Нужно чтобы когда в запросе спрашивают "Основную категорию", она выдавало Сумму (Основной категории и Основной категории1)
    А когда в запросе спрашивают "Подкатегорию" , она выдавало Сумму (Подкатегории и Подкатегории1)

    Вот попытался соединить запросы подставив для начала вместо $category=405(ID Основной категории)

    Код (Text):
    1.  
    2. (SELECT COUNT(goods_id) AS count_rows
    3. FROM goods
    4. WHERE (goods_catalog = 405 OR goods_catalog1 = 405)  AND visible='1')
    5.  
    6. UNION
    7.  
    8. (SELECT COUNT(goods_id) AS count_rows
    9. FROM goods
    10. WHERE goods_catalog + goods_catalog1 IN
    11. (
    12. SELECT catalog_id FROM catalog WHERE parent_id = 405
    13. ) AND visible='1')
    Основная категория работает Отлично
    [​IMG]

    А теперь тот же запрос только уже подкатегория, вместо $category=404(ID Подкатегории)

    Код (Text):
    1.  
    2. (SELECT COUNT(goods_id) AS count_rows
    3. FROM goods
    4. WHERE (goods_catalog = 404 OR goods_catalog1 = 404)  AND visible='1')
    5.  
    6. UNION
    7.  
    8. (SELECT COUNT(goods_id) AS count_rows
    9. FROM goods
    10. WHERE goods_catalog + goods_catalog1 IN
    11. (
    12. SELECT catalog_id FROM catalog WHERE parent_id = 404
    13. ) AND visible='1')
    Только происходит разница подкатегорий
    [​IMG]

    Как решить эту проблему?
    Пожалуйста помогите разобраться неопытному
     
  2. devid134

    devid134 Новичок

    С нами с:
    19 июл 2013
    Сообщения:
    14
    Симпатии:
    0
    Неужели никто не поможет?
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    попробуй с начала и уложись в один абзац. твои "пути к решению" никого не интересуют.
    что надо посчитать?