"לכל פריט, מצא את הספק(ים) עם המחיר הכי יקר."
נעשה זאת באמצעות שני שלבים:
- קבלת הרשימה של (article,maxprice).
- לכל פריט, קבלת השורות המתאימות בעלות המחיר המקסימלי.
זה יכול להיעשות בקלות באמצעות טבלה זמנית (temporary):
Mysql>CREATE TEMPORARY TABLE tmp ( -> article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, -> price DOUBLE(16,2) DEFAULT '0.00' NOT NULL;(
Mysql>LOCK TABLES shop read;
Mysql>INSERT INTO tmp ->SELECT article, MAX(price) FROM shop GROUP BY article;
Mysql>SELECT shop.article, dealer, shop.price FROM shop, tmp ->WHERE shop.article=tmp.article AND shop.price=tmp.price;
Mysql>UNLOCK TABLES; Mysql>DROP TABLE tmp; |
"האם ניתן לבצע זאת ע"י שאילתא אחת?"
כן, אבל רק באמצעות שימוש 'טריק' לא כל-כך יעיל:
Mysql>SELECT article, SUBSTRING ( MAX ( CONCAT (LPAD (price,6,'0'),dealer) ), 7) AS dealer, 0.00+LEFT ( MAX ( CONCAT (LPAD (price,6,'0'),dealer) ), 6) AS price FROM shop GROUP BY article; |
התוצאה:
|