我还需要从fieldid = 5的xcart_extra_field_values中选择值。环顾四周,我似乎需要做的是使用连接和别名,但是我似乎不知道如何在表本身上连接,而只是使用另一个别名作为值,并试图在同一个表中两次崩溃我的数据库。两次。
这是我当前的查询,它是有效的:
SELECT a.avail,
c.value,
b.productid,
a.productcode,
FROM xcart_products a,
xcart_products_lng_en b,
xcart_extra_field_values c,
WHERE a.productid IN
(SELECT productid
FROM xcart_extra_field_values
WHERE a.productid = productid
AND fieldid = 5
AND (LOWER(value) = 'retail'
OR LOWER(value) = 'stock'
OR LOWER(value) = 'c1 stock'
OR LOWER(value) = 'c2 stock'
OR LOWER(value) = 'g stock') )
AND c.fieldid = 9
AND (a.productid = b.productid)
AND (b.productid = c.productid)这是使数据库崩溃的查询:
SELECT a.avail,
c.value,
d.value,
b.productid,
a.productcode
FROM xcart_products a,
xcart_products_lng_en b,
xcart_extra_field_values c,
xcart_extra_field_values d
WHERE a.productid IN
(SELECT productid
FROM xcart_extra_field_values
WHERE a.productid = productid
AND fieldid = 5
AND (LOWER(value) = 'retail'
OR LOWER(value) = 'stock'
OR LOWER(value) = 'c1 stock'
OR LOWER(value) = 'c2 stock'
OR LOWER(value) = 'g stock') )
AND c.fieldid = 9
AND d.fieldid = 5
AND (a.productid = b.productid)
AND (b.productid = c.productid)发布于 2014-10-01 05:18:01
我已经把它弄好了。典型的我发布mysql问题的时候。
SELECT a.avail,
c.value,
d.value,
b.productid,
a.productcode
FROM xcart_products a,
xcart_products_lng_en b,
xcart_extra_field_values c,
xcart_extra_field_values d
WHERE a.productid IN
(SELECT productid
FROM xcart_extra_field_values
WHERE a.productid = productid
AND fieldid = 5
AND (LOWER(value) = 'retail'
OR LOWER(value) = 'stock'
OR LOWER(value) = 'c1 stock'
OR LOWER(value) = 'c2 stock'
OR LOWER(value) = 'g stock') )
AND c.fieldid = 9
AND d.fieldid = 5
AND (a.productid = b.productid)
AND (b.productid = c.productid)
AND (c.productid = d.productid)我还需要将c.productid与d.productid进行比较。然而,我对我自己的答案并不满意,因为它看起来非常低效。不幸的是,这是由于我自己对mysql的理解有限。
https://stackoverflow.com/questions/26130145
复制相似问题