Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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/5/sql/72.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/0/react-native/7.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
带连接的Mysql查询_Mysql_Sql_Join - Fatal编程技术网

带连接的Mysql查询

带连接的Mysql查询,mysql,sql,join,Mysql,Sql,Join,我无法进行查询以获得一些交叉值。我对mysql的了解不足以制作这种东西 我有两张桌子,signedup和signedup。两个字段都相同:姓名、姓氏1、姓氏2、NIF、年份、城市、状态和签名日期 当按姓氏1和姓氏2(A到Z)排序的状态均为0时,我希望将两个表中的所有值一起获取。此外,我还希望有一个新字段,名为“app”,其中根据数据来自哪个表,它会说是或否。如果签名为PupLocal,则为是,否则为否 之后,当状态为1时,我想做同样的事情,按dateSigned排序(先老一点) 到目前为止,我还

我无法进行查询以获得一些交叉值。我对mysql的了解不足以制作这种东西

我有两张桌子,signedup和signedup。两个字段都相同:姓名、姓氏1、姓氏2、NIF、年份、城市、状态和签名日期

当按姓氏1和姓氏2(A到Z)排序的状态均为0时,我希望将两个表中的所有值一起获取。此外,我还希望有一个新字段,名为“app”,其中根据数据来自哪个表,它会说是或否。如果签名为PupLocal,则为是,否则为否

之后,当状态为1时,我想做同样的事情,按dateSigned排序(先老一点)

到目前为止,我还没有尝试测试一个完整的查询,因为我对它的一部分有问题

我已经试过这样的方法:

SELECT signedupLocal.name,
       signedupLocal.surname1, 
       signedupLocal.surname2,
       signedupLocal.NIF,
       signedupLocal.year, 
       signedupLocal.city, 
       signedup.name, 
       signedup.surname1, 
       signedup.surname2, 
       signedup.NIF, 
       signedup.year, 
       signedup.city  
FROM signedup, signedupLocal
WHERE signedup.id_Event = 78 
AND signedupLocal.id_Event = 78
AND signedupLocal.status = 0
AND signedup.status = 0

但它失败了

使用两个查询的联合来连接结果

SELECT * FROM (
SELECT *, "signedup" AS tablename FROM signedup WHERE …
UNION
SELECT *, "signedupLocal" AS tablename FROM signedupLocal WHERE …
) U
ORDER BY U.dateSigned DESC
请注意,使用
UNION
时,需要使用列编号,而不是
顺序中的列名。我使用了
UNION-ALL
,因为它比
UNION
更有效,因为后者会删除重复项,这会给数据库引擎带来麻烦。所以如果你知道没有,你可以避免


对于排序,我在不应按排序列对记录进行排序的情况下使用常量。

“但它失败了。”确切地说,这意味着什么?此外,没有连接条件。因此,他将从两个表中获取所有行的组合。我尝试了这一方法进行测试,但没有得到行。我可以引导您进入连接的伟大解释页面吗?这很有效。您知道如何在联接的每个部分添加具有不同值的新字段吗?答案是/否field@FabienWarniez您缺少问题中描述的排序。是否可以连接2个联接?我的意思是,我希望状态为0的用户按姓氏排序,但状态为1的用户按dateSigned排序。我想我必须进行两次查询才能获得状态0和状态1
SELECT name, surname1, surname2, NIF, year, city, status, 'no' as app,
       case when status = 1 then datesigned else '2099-12-31' end as datesigned_sort,
       case when status = 0 then surname1 else '' end as surname1_sort,
       case when status = 0 then surname2 else '' end as surname2_sort
FROM signedup
WHERE id_Event = 78 AND status in(0,1)

UNION ALL

SELECT name, surname1, surname2, NIF, year, city, status, 'yes' as app,
       case when status = 1 then datesigned else '2099-12-31' end as datesigned_sort,
       case when status = 0 then surname1 else '' end as surname1_sort,
       case when status = 0 then surname2 else '' end as surname2_sort
FROM signedupLocal
WHERE id_Event = 78 AND status in(0,1)

ORDER BY 7 asc, 9 desc, 10 asc, 11 asc