I'm having trouble understanding how to write a specific MySQL query to perform a relational division/ intersect. I have looked at the following links/ SO questions, but I'm still confused :
MySQL equivalent of IN() clause doing Logical AND ; Relational Algebra : Division ; Divided we Stand ; Advanced SQL : Intersect ; Doing INTERSECT and MINUS in MySQL and Alternative to INTERSECT in MySQL
I attempted to adapt the SQL query shown in "Alternative to INTERSECT in MySQL", but got lost in the implementation.
Pseudocode :
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 (inside 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 )