兩張桌子,產品和生產者。我想購買特定類型的產品,但只能從生產該產品的最高優先級的生產商購買,並且我需要他們的網址。如果多個生產者具有最高的優先級,那麼給每個生產者和被選中的機會相等。最大集隨機記錄(附加約束)
我決定買一輛車。從下面的示例數據中,本田和福特是優先級最高的車型,因此返回50%的本田URL和50%的福特URL。
Products Table: | producer_id | product_type | product_url |
|-------------|--------------|-----------------|
| 3 | car | wiki.com/a.html |
| 1 | bat | wiki.com/b.html |
| 2 | car | wiki.com/c.html |
| 4 | car | wiki.com/d.html |
| 2 | car | wiki.com/e.html |
Producers Table:| producer_id | producer | priority |
|-------------|----------|----------|
| 1 | wilson | 30 |
| 2 | honda | 20 |
| 3 | mazda | 5 |
| 4 | ford | 20 |
的爛攤子我在那一刻我敢肯定,可以簡化爲:
SELECT products.url
FROM products, producers
WHERE products.producer_id = producers.producer_id AND products.product_type = 'car'
AND priority IN
(SELECT MAX(priority)
FROM products, providers
WHERE products.producer_id = producers.producer_id AND
products.product_type = 'car'
)
ORDER BY RAND() LIMIT 1
再加上它有問題,它會返回本田的網頁時2 /三分之二,因爲本田有兩個三個最高優先級的模型。
期待學習的東西!