有两个表1)参与者和2)logindatetime。 第一次登录datetime值以及其他用户数据,如名称,位置,联系号码,电子邮件被插入到具有datatime列的参与者表中...对于同一用户的任何后续登录,我们将datetime值插入logindatetime列以保持用户登录的次数记录....现在我必须在一列中显示所有登录时间(首次登录时间和后续登录时间)以及姓名,位置,联系人号码,同一用户的电子邮件。 (我在参与者表中有一个身份)。
尝试了以下查询:
mort = node()
mort.student='murtaza'
mort.grow()
但它会多次显示首次登录时间。
答案 0 :(得分:1)
你需要做这样的事情来分别获取第一个和其他登录:
select a.firstname as Name, a.Email, a.Address1 as Location,
a.MobileNo as Contact, a.datetime
from eventonline.participant a
union all
select a.firstname as Name, a.Email, a.Address1 as Location,
a.MobileNo as Contact, b.datetime
from eventonline.participant a
join eventonline.logindatetime b on a.Id = b.Rid
将第一次登录添加到logindatetime
可能更容易答案 1 :(得分:0)
JamesZ的回答给出了解决方案,但进一步说明了为什么你的方法不起作用。您正在加入这两个表并使用coalesce(a.DateTime, b.DateTime)
来显示登录时间。如果用户之前已登录,则a.DateTime
具有非空值。如果coalesce(x,y)
为空,则y
仅使用x
。但这不是真正的问题。第一个登录时间需要在logindatetime表中记录自己的记录。如果用户登录5次,则logindatetime将有4行,并且在加入这两个表时您将看到所有这些行。您需要将第一个登录时间保存为logindatetime中的行,或者使用UNION强制将第一个登录时间添加为额外行。
答案 2 :(得分:0)
我遇到了同样的问题,但根据 James Z's answer 我解决了我的问题:
select a.start_date as start, a.end_date as end, a.rooms_id as roomid from maintenance a UNION ALL SELECT b.check_in as start, b.check_out as end, b.room_id AS roomid from reservations b
两个表的查询结果如下:
答案 3 :(得分:-1)
你可以在你的sql语句中使用联接,我刚刚在3天前学会了它们并且它们非常有用!
它看起来像这样:
SELECT * FROM table1
LEFT JOIN table2 ON table1.column1 = table2.column1
WHERE table1.column1 = '$yourVar';
table1.column1可以是id,第二个表中的对应id可以是将其链接到第一个表(外键)的id,它将检索第一个表的数据并带来所有数据第二个表格也与ON
标准