[英]Complex MySQL Query, Multi Table - How Do I Write This Relational Query?
[英]How to write a specific MySQL query to perform a relational division/ intersect? Id est, what query do I write?
我在理解如何編寫特定的MySQL查詢以執行關系除法/相交方面遇到麻煩。 我看過以下鏈接/ SO問題,但我仍然感到困惑:
MySQL等效於IN()子句,執行邏輯AND ; 關系代數:部門 ; 分開我們站着 ; 高級SQL:相交 ; 在MySQL中進行INTERSECT和MINUS以及在MySQL中 替代INTERSECT
我嘗試調整“ MySQL中的INTERSECT的替代方法”中顯示的SQL查詢,但在實現中迷失了方向。
偽代碼 :
Want : package.* from package WHERE package.pkid equalto package_products.pkid AND package_products.pid is_all_of (
WANT : option_products.pid FROM option_products
WHERE option_products.oid = [optionID]
), // returning packages that have all of the product IDs (pids) and not just one of them.
[OptionID] = $option
MySQL (在db_query()內部:
"SELECT package.* FROM package WHERE package.pkid = package_products.pkid && package_products.pid is_allof(".
// What do I use in place of 'is_all_of'? How do I do an intersection/ relational division with INNER JOIN and/ or USING(pid)?
" SELECT options_products.pid FROM options_products WHERE options_products.oid = :option
)", array(":option" => $option )
也許我在這里錯過了一些東西,但是我會說
db_query("SELECT package.* FROM package
WHERE package.pkid = package_products.pkid
&& package_products.pid IN
(SELECT options_products.pid FROM options_products
WHERE options_products.oid = %d)", $option));
應該為您工作。
我已經重寫了您的語法,以滿足Drupal 6 db_query的要求( http://api.drupal.org/api/drupal/includes!database.mysql-common.inc/function/db_query/6 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.