簡體   English   中英

如何編寫特定的MySQL查詢以執行關系除法/相交? ID EST,我要寫什么查詢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM