在我们的数据库中,我们有一个表,它是三个表的每个排列的结果。
我正在尝试编写一个 PHP 脚本,它将所有这些表视为数组并检测是否缺少排列。
例如
$foo = array('one', 'two', NULL)
$bar = array('three', 'four', NULL)
$baz = array('five', 'six', NULL)
$permutations = array(
array('one', 'three', 'five'),
array('two', 'three', 'five'),
array(NULL, 'three', 'five'),
//etc
)
foreach $foo as $x
foreach $bar as $y
foreach $baz as $z
$combo = array($x, $y, $z)
if $combo is not in $permutations
//generate sql to update db
我怎样才能实现这个目标?
最佳答案
您必须使用 MySQL 检索每个可能的排列,并在第四个表上使用 LEFT JOIN 并测试是否没有匹配
如果您有 3 个表 t1、t2、t3,其中包含一列“值”,而表 t4 是包含三列 t1、t2 和 t3 的“排列”,则可以使用以下命令获取不存在的“排列”以下查询
SELECT t1.value v1, t2.value v2, t3.value v3
FROM t1, t2, t3
LEFT JOIN t4 ON t4.t1=v1 AND t4.t2=v2 AND t4.t3=v3
WHERE t4.t1 IS NULL;
您可以调整此查询以匹配您的数据库架构。
关于php - 检测多维数组中的新排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28686764/