Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查询两个表中的不同/独立值_Php_Mysql - Fatal编程技术网

Php 查询两个表中的不同/独立值

Php 查询两个表中的不同/独立值,php,mysql,Php,Mysql,我有两张桌子: 任务 id名称截止日期已完成项目id 计划 id名称截止日期已完成 我需要查询两个表中具有相同数据的行。我尝试执行一个示例语句,只查找completed=0的行,但从未得到任何结果。我认为这与使用或代替AND有关,但它现在只是略高于我的水平……有什么想法吗 为了澄清,我不是在寻找重复的行,我是在寻找“完成=0的所有任务和项目” 查询是: SELECT * FROM "task" t, "project" p WHERE t.dueDate = "2012-08-17" OR p.

我有两张桌子:

任务 id名称截止日期已完成项目id

计划 id名称截止日期已完成

我需要查询两个表中具有相同数据的行。我尝试执行一个示例语句,只查找completed=0的行,但从未得到任何结果。我认为这与使用或代替AND有关,但它现在只是略高于我的水平……有什么想法吗

为了澄清,我不是在寻找重复的行,我是在寻找“完成=0的所有任务和项目”

查询是:

SELECT * FROM "task" t, "project" p WHERE t.dueDate = "2012-08-17" OR p.dueDate = "2012-08-17" AND t.completed = 0 OR p.completed = 0
我确实设法让其中一个答案的代码起作用,但我意识到,我的整个应用程序都是为了与一个表对话而编写的,只需将任务表和项目表结合起来,并使用isProject列来区分项目和任务,就会容易得多。这还增加了在项目内部嵌套项目的能力,因为项目现在也将有一个projectID列

最后,亲吻占了上风

谢谢你的帮助!我将标记有效的答案,即使我不会使用它。

尝试使用括号

SELECT * FROM "task" t, "project" p WHERE (t.dueDate = "2012-08-17" OR p.dueDate = "2012-08-17") AND (t.completed = 0 OR p.completed = 0)
请尝试以下方法:

SELECT dueDate, completed
FROM task AS t 
WHERE (dueDate = "2012-08-17" AND completed = 0)
UNION ALL
SELECT dueDate, completed
FROM project AS p
WHERE (dueDate = "2012-08-17" AND completed = 0)

这将为您提供dueDate=2012-08-17和completed=0的每个表中的所有记录。

如果您只想从dueDate='2012-08-17'中的completed=0的两个表中匹配值:

您可以使用join将表结果绑定到一个表中。 内部联接将只返回双方都匹配的结果。 因此,您可以使用它在两个表中按它匹配它们,然后按classic筛选您想要的值,其中:

select * from task t inner join project p on t.dueDate = p.dueDate and t.completed = p.completed
where t.dueDate = '2012-08-17' and t.completed = 0

您可以发布您尝试的查询吗?从任务t、项目p中选择*其中t.dueDate=2012-08-17或p.dueDate=2012-08-17且t.completed=0或p.completed=0您可以发布一些示例数据和预期结果吗?使用表标识符似乎有些奇怪。您确定不打算改为使用`吗?phpmyadmin:1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在第1行“task t,project p,其中t.dueDate=2012-08-17或p.dueDate=2012-08-17”附近使用的正确语法是的,正如Zane所说。。。很抱歉这就是我复制和粘贴的结果。1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行的“内部连接项目p on t.dueDate=p.dueDate和t.completed=p.completed wher”附近使用的正确语法!现在想知道如何更改此代码以生成该语句……呃:$where='t....$range'或p.$range'和t.$status'或p.$status。;那么,如果我将列从dueDate、completed中取出,并仅使用*来处理我现有的预处理语句,这会起作用吗?刚试过使用*s,得到1222条-使用的SELECT语句有不同的列数。试试看也无妨!我认为两个表之间的列需要在查询中重叠,但我可能错了。好吧,这样就可以了,但是它不返回整行,它只返回dueDate和completed。不知道如何调整,避免在SELECT语句之后添加我需要的其他列