mysql 互换两行_mysql连接两行合为一(mysql join with two row into one)

mysql连接两行合为一(mysql join with two row into one)

我有2个表的表名是用户和项目。表的结构是:

用户表

id | name | role

1 | samjad | user

2 | saneer | constructor

项目表

id | name | user_id | constructor_id |

1 | school | 1 | 2 |

如何根据项目表ID从一个表中获取所有详细信息。

我想选择

projectname username, constroctorname, user_id, constroctor_id

在一排

I have 2 tables table name is users and projects.the structure of table is:

user table

id | name | role

1 | samjad | user

2 | saneer | constructor

projects table

id | name | user_id | constructor_id |

1 | school | 1 | 2 |

How can i get all details from both table in a single row based on project table id.

i want to select

projectname username, constroctorname, user_id, constroctor_id

in a single row

原文:https://stackoverflow.com/questions/42932005

2020-07-28 12:07

满意答案

您可以将用户表加入两次 - 一次作为用户,然后作为构造函数。

select p.name as projectname,

u.name as username,

c.name as contructorname,

p.user_id,

p.contructor_id

from projects p

left join user u on p.user_id = u.id

left join user c on p.contructor_id = c.id

where u.role = 'user' -- check if the said user has role "user"

and c.role = 'constructor'; -- check if the said constructor has role "constructor"

You can join the user table twice - Once as users and then as constructors.

select p.name as projectname,

u.name as username,

c.name as contructorname,

p.user_id,

p.contructor_id

from projects p

left join user u on p.user_id = u.id

left join user c on p.contructor_id = c.id

where u.role = 'user' -- check if the said user has role "user"

and c.role = 'constructor'; -- check if the said constructor has role "constructor"

2017-03-21

相关问答

你可以用这个: select

main_table.user_id,

concat(s1.meta_value, ' ', s2.meta_value) as name

from

main_table left join secondary_table s1

on main_table.user_id = s1.user_id and s1.meta_key = 'first_name'

left join secondary_table s2

on main_table....

如果您想在结果集中单独定位它,您可以在选择中将其别名: SELECT gp.*, u.*, gp.id AS grouppost_id

FROM grouppost AS gp

LEFT JOIN users AS u ON u.username = gp.author

WHERE gp.gname = ?

AND gp.type = ?

ORDER BY gp.pdate DESC

$limit

If you want to target it separately in the ...

为此使用GROUP_CONCAT SELECT LocationName,

StationName ,

GROUP_CONCAT(`12:00 - 13:00` SEPARATOR ' ') `12:00 - 13:00`,

GROUP_CONCAT(`13:00 - 14:00` SEPARATOR ' ') `13:00 - 14:00`,

GROUP_CONCAT(`15:00 - 16:00` SEPARATOR ' ') `...

你本质上是想做一个PIVOT 。 这里的问题是我们需要PIVOT行标识符。 这就是我引入了由您的empresa专栏分组的行号。 所以这样的事情应该有效,但你需要知道潜在列的最大数量。 但是,这应该有助于您入门: select g.empresa,

MAX(CASE WHEN rownum = 1 THEN g.email END) Email1,

MAX(CASE WHEN rownum = 2 THEN g.email END) Email2,

MAX(CASE WHEN rownu...

请参阅SQL仅选择列上具有最大值的行,以获取每个outreach_id的max end_date行。 然后加入该行以获取最新状态。 SELECT o.*, ol1.max_date, ol2.status, SUM(ol.status = "Approved" and (ol.end_date > Now() or end_date is null)) as cond1, SUM(ol.status = "Pending") as cond2,

SUM(ol.status = "Appro...

这就是你要找的东西: SELECT r.name AS room_name,

GROUP_CONCAT(p.name separator ',') AS people_name,

GROUP_CONCAT(t.name separator ',') AS things

FROM Rooms r

LEFT JOIN People p ON p.fk_rooms = r.id

LEFT JOIN Things t ON t.fk_rooms = r.id

GROUP BY r.id

...

你需要在这里使用GROUP BY 。 但是我们不能直接使用它。 所以你可以使用这样的子查询实现这个: UPDATE OrderRows o

JOIN Stock s

ON s.ProductNumber = o.ProductNumber

JOIN

(

SELECT ProductNumber, SUM(Quantity) AS Quantity

FROM OrderRows

WHERE Done = 'no'

...

您可以使用CROSS JOIN来获得所有组合。 然后使用WHERE子句过滤掉相同行之间的组合: SELECT t1.*, t2.*

FROM mytable AS t1

CROSS JOIN mytable AS t2

WHERE t1.Id <> t2.ID

You can use a CROSS JOIN in order to get all combinations. Then use a WHERE clause to filter out combinations between t...

使用GROUP BY : 这个想法是重新排列列( x和y ),在这种情况下按字母顺序排列,然后在GROUP BY使用排列的列( FirstCol和LastCol ) SQL小提琴 WITH Cte AS(

SELECT *,

FirstCol = CASE WHEN x <= y THEN x ELSE y END,

LastCol = CASE WHEN x <= y THEN y ELSE x END

FROM tbl

)

SELECT

...

您可以将用户表加入两次 - 一次作为用户,然后作为构造函数。 select p.name as projectname,

u.name as username,

c.name as contructorname,

p.user_id,

p.contructor_id

from projects p

left join user u on p.user_id = u.id

left join user c on p.contructor_id = c.id

where...

相关文章

Oozie是个针对Hadoop的工作流,有些自己的语法. 这两天碰到一个异常,查看源码才明白Oozie

...

原来的系统性能慢,今天在做性能调优,发现有一个多表查询存在性能问题。 我的hbm.xml配置文件

...

CROSS-DOCUMENT JOINS solr 的join相当于SQL的nested join;s

...

在做Hadoop的编程时,有时会用到HBase,常常涉及到把HDFS上面的数据导入到HBase中,在这

...

有时直接用mysql的字符串函数比查出来再用java字符串函数来处理简单的多,在这里收集了6个常用的M

...

datajoin包在Hadoop的contrib目录下,我们也可以在src下面看见其源码,它的源码很小

...

MySQL是我们最常见且常用的关系型数据库之一,其相关的优化和最佳实践的tips,网上早已泛滥了,但其

...

Solr与Mysql集成指南 chuanliang于 2011-9-24,20:28 Comm

...

因为MySQL再debian下默认是不允许远程连接的,所以需要注释掉这个限制。我的MySQL是用apt

...

在《企业级搜索引擎Solr使用入门指南》及《企业级搜索引擎Solr交流》中对Solr的使用做了简单介绍

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值