2013-03-06 5 views
1

Я надеюсь, что кто-то, свободно владеющий MySQL, сможет мне помочь. Я пытаюсь сделать выбор по выбору при выборе, но запрос, похоже, не хочет завершаться. Любая помощь будет принята с благодарностью.Несколько выборок в одном запросе

SELECT 
    product as pid, 
    leg_name as name, 
    dimensions as dims 
FROM 
    pmaint 
WHERE 
    product in (
     SELECT product 
     FROM qb_export_items_attributes 
     WHERE attribute_name = 'Z' 
     AND product in (
       SELECT product 
       FROM pmainT 
       WHERE type_ID = (
         SELECT ID 
         FROM type 
         WHERE SOFTCARTCATEGORY = 'End Table Legs' 
        ) 
       ) 
     AND attribute_value <= 3.5 
    ) 
+1

1) что вы подразумеваете под "не хочет заполнять?" 2) что вы пытались заставить его работать? (например, вы пробовали, чтобы каждый из них выбирал, чтобы увидеть, был ли один из них сломан?) –

+3

Почему подзапросы и не объединяются? –

+2

@AndrewMcGivery Если бы я выпил кофе, я бы плюнул на него по всему экрану. – Phil

ответ

1

Попробуйте использовать INNER JOIN и вместо В подзапросов

UPD: Я редактировал этот запрос в соответствии вы комментируете. первый подзапрос JOIN выводит все product, где оба атрибута существуют и истинны.

SELECT 
    pmaint.product as pid, 
    pmaint.leg_name as name, 
    pmaint.dimensions as dims 
FROM 
    pmaint 
JOIN (select product from qb_export_items_attributes 
     where ((attribute_name = 'Z') and (attribute_value <= 3.5)) 
      OR 
      ((attribute_name = 'top_square') and (attribute_value >= 4)) 
     GROUP BY product HAVING COUNT(*)=2 
    ) 

     t1 on (pmaint.product=t1.product) 
JOIN type on (pmaint.type_ID=type.ID) 
WHERE 
     type.SOFTCARTCATEGORY = 'End Table Legs' 
+0

Valex, это потрясающе! Это работает отлично! –

+0

Valex, еще один компонент, который я забыл добавить, и я надеюсь, что вы сможете помочь с этим ... Если t1.attribute_name = 'Z', то t1.attribute_value <= 3.5. Если t1.attribute_name = 'top_square', то t1.attribute_value> = 4. Оба эти условия должны быть истинны для отображения одного идентификатора продукта. Данные для t1 выглядят следующим образом. 'ПРОДУКТ | attribute_name | attribute_value 1 | Z | 3.5 1 | top_square | 3 2 | Z | 2 2 | top_square | 5 3 | Z | 5 3 | top_square | 4' Мы должны соответствовать только идентификатору продукта 2, так как оба Z <= 3.5 И top_square> = 4. Еще раз спасибо за вашу помощь –

+0

Заменить - с разрывами строк. Тогда данные будут выглядеть более уместно в табличном формате. - ПРОДУКТ | attribute_name | attribute_value - 1 | Z | 3,5 - 1 | top_square | 3 - 2 | Z | 2 - 2 | top_square | 5 - 3 | Z | 5 - 3 | top_square | 4 - Мы должны соответствовать только идентификатору продукта 2, потому что оба Z <= 3.5 И top_square> = 4. –

Смежные вопросы