我正在尝试将SQL查询转换为Hibernate标准。
我的任务是在SQL中工作:
select * from objective
left outer join conditionstate
on objective.conditionid = conditionstate.conditionid
and conditionstate.personid = XXXX
where objective.toto_id = YYYYY
目标不是直接映射到condition_state,而是映射到条件中。
objective -->
我有一个列(代码、存储、slotAvailable)的查询,结果将在其中显示。至于列"slotAvailable",它将包含该特定“存储”的空闲插槽数。现在,要计算有多少空闲插槽,我只能在与表"TimeSlotInstanceReservation“连接时才能这样做,因为在这个表中有一个字段"slotConsumed”,我需要用表"TimeSlotInstance“的容量总字段执行减法:
TimeSlotInstance as tsi
join TimeSlotInstanceReservation as tsir on {tsir. timeSlotI
我有表Account,它有零对多的Subscription,我想返回Account.name和Subscription.end。
如果没有活动订阅,Subscription.end应该是NULL。
这是我的(不正确的) SQL:
SELECT acc.name,
s.t_end
FROM ACCOUNT acc LEFT JOIN SUBSCRIPTION s ON acc.id = s.account_id
WHERE acc.id = 1
AND s.t_start <= CURRENT_TIMESTAMP()
AND s.t_end > CURRENT_
我在做一本字典,我有两张桌子
word (word, description, ext)
translate (id, word_translate, description_tranlate, org_word, language_id)
不是所有的单词都是翻译的,我只想搜索'word‘和’word_ search‘。搜索结果应始终显示单词+已翻译(如果存在)。我的搜索查询如下所示。
SELECT * FROM word
LEFT JOIN translate ON (word=org_word AND language_id=?)
WHERE (word LIKE "%so
这是理论/最佳实践征求意见的请求。
我已经习惯于将WHERE子句和连接条件视为“托管”任何业务逻辑的好地方,这些业务逻辑将使我的查询尽可能精确。
但我注意到,将不相关的业务逻辑添加为联接条件可能违反“最佳实践”。例如:
SELECT a.Id, b.Id
FROM foo AS a
LEFT OUTER JOIN bar AS b ON a.Id = b.Id
AND GETDATE() >= "18/5/2011"
这个例子有点幼稚:在现实生活中,调用者确实需要额外的条件,如果没
我在表示一个查询时遇到了一点困难。我想要转换为SQL语句的语句是:
select count(*)
from assigned, tasks
where
assigned.id_task = 1
or
(assigned.id_project=tasks.id_project and tasks.id=1)
到目前为止,我成功地提出的是:
select count(*)
from assigned a
left join projects p
on p.id=a.id_project
left join tasks t
on t.id_project=p.id
where
我有下面的表格。
Owner_id Owner
-----------------
1 Bill
2 Steve
Animal Owner_fk_id
-----------------------
Cat 1
Dog 1
Lion 2
Car Owner_fk_id
-----------------------
Ferrari 1
BMW 1
Lotus 2
我希望列出所有的动物和汽车,为一个拥有至少一辆法拉利的车主。由于比尔有一辆
我从一个table中选择了一个objects e列表,它们与另一个表中的对象具有one to many关系。我想要获取所有对象,但仅获取依赖于某个属性的部分其他对象。例如,一个电影列表,每个电影都有一系列与之相关联的演员,但我只想得到分配了薪水的演员。它现在的工作方式仍然返回所有演员的所有电影,唯一的条件是至少有一个演员有工资分配: SELECT m FROM movies LEFT JOIN m.actors a WHERE a.salary IS NOT NULL 我对它在JPA中的工作方式没有经验,不确定这种情况下最简单的解决方案是什么。
我需要将left join替换为我在代码中使用的变量。这可以做到吗?因此,不是 LEFT JOIN tbl_campaigns ON
tbl_creatives.fk_s_id_tbl_campaigns = tbl_campaigns.s_id 我需要有 LEFT JOIN tbl_campaigns ON
'100' = tbl_campaigns.s_id
我有下面两张表
Employee(age,name,dpt_cd,dpt_rg_cd)
Department(dpt_id,dpt_cd,dpt_rg_cd)
我想在这些表上执行下面的查询,但不幸的是HIVE不支持联接条件中的OR。如何在没有OR条件的情况下重写产生相同结果的查询
SELECT * FROM employee LEFT OUTER JOIN department ON (employee.dpt_cd =department.dpt_cd OR (employee.dpt_cd ='' AND employee.dpt_rg_cd= employee.dpt_r
我一直认为以下形式的陈述
SELECT * FROM A LEFT JOIN B ON (A.column1 = B.column2 AND B.column2 = 12321)
总是等价于
SELECT * FROM A LEFT JOIN B ON (A.column1 = B.column2)
WHERE B.column2 = 12321
更笼统地说:
SELECT * FROM A LEFT JOIN B ON (FOREIGN-KEY AND FILTER_ON(B))
WHERE FILTER_ON(A)
应相当于
SELECT * FROM A LEFT JOIN B ON
SELECT p1.userid, p1.username, p2.lids
FROM VB_user p1
LEFT JOIN AB_judge_perm p2 on p1.userid = p2.userid
WHERE p1.membergroupids LIKE '".19.",%'
OR p1.membergroupids LIKE '%,".19."'
OR p1.membergroupids LIKE '%,".19.&
我试图根据它们的值使用不同的列。如果A列为null,则使用列B。问题是,这是在一个LEFT JOIN表达式中:
SELECT *
FROM
novinarji
LEFT JOIN naslovi ON novinarji.stalniNaslovId=naslovi.id
LEFT JOIN posta ON naslovi.postaId=posta.id
WHERE
posta.stPoste = 3000
当第一列是novinarji.stalniNaslovId时,我需要将novinarji.zacasniNaslovId改为NULL。
我希望这是足够清楚的。
谢谢!
有个问题要问。在使用左联接时,如何列出所有的左表以显示数据,即使某些行中的值为空?
这是我的问题:
SELECT *, SUM(transactions.debit_credit) current_spending
FROM (`budget`) LEFT JOIN `categories` ON `budget`.`category`=`categories`.`idcategory`
LEFT JOIN `user_category` ON `budget`.`category`=`user_category`.`idcategory`
LEFT JOIN `category_tra
第一个查询:
SELECT SUM(Rent.paid) AS Rent__summed_rents
FROM rents AS Rent
LEFT JOIN contracts ON contracts.id = Rent.id
LEFT JOIN units ON contracts.unit_id = units.id AND units.owner_id = 29
第二个查询:
SELECT SUM(Rent.paid) AS Rent__summed_rents
FROM rents AS Rent
LEFT JOIN contracts ON contracts.id =
我需要一个视图的左联接查询
对于这个视图,我有两个过滤器,其中参数为左表和右表。
我需要右表中的空行。
第一个查询没有工作,但我可以从视图中筛选它:
select * from histoStatut h
left join listStatut ls on h.idstatutid = ls.idstatutid or ls.idstatutid is null
where h.idRequestid = 32651 and ls.IdListeId = 9 ;
第二个查询工作正常,但对视图而言,对严谨表的筛选是不可接受的:
select *
from (sel
这是我的问题
select u.FirstName as AssignedBy, u1.FirstName as RespondedBy, u2.FirstName as ClosedBy
from Messages M
left join User u on isnull(M.AssignedBy, 0) = u.UserId
left join User u1 on isnull(M.RespondedBy, 0) = u1.UserId
left join User u2 on isnull(M.closedby, 0) = u2.UserId
可以在单个查询中编写连接吗?我想提
我不明白为什么Oracle会返回这个奇怪的结果。我认为代码真的非常清晰。
我期望没有条件=(在外部连接条件中不为空)+(在外部连接条件中为空)
因为我将外部连接右侧表列中的IS NULL / IS NOT NULL解释为EXISTS / NOT EXISTS条件。
为什么我错了?
DESCRIPTION COUNT(1)
---------------------------------- ----------
No condition 6403
is NOT null in OUTER
我可能搞砸了。但是我有一个WordPress系统,在这里我试图在MySQL中构建特定用户数据的导出。如果该行不存在,我希望元数据返回NULL,但它似乎是一个限制。如果不存在任何元数据,则省略整个用户。
SELECT
users.ID,
users.user_email,
_first.meta_value as firstName,
_second.meta_value as lastName,
users.display_name,
_gender.meta_value as gender,
_age.meta_value as age,
_nationali
当我为月份、年份和报表源设置参数时,它们似乎没有任何影响。我在做这个程序的时候还能拿到所有的销售。有人能看到什么不对劲吗?
ALTER PROCEDURE [dbo].[ddsDiscount]
@month INT,
@year INT,
@report_source nvarchar
AS
SELECT
isa.identifiers AS ISBN,
isa.sales_date AS DATO,
isa.qua
因此,我有一个sql查询:
select
o.id,
o.name,
d.name,
w.day,
o.suspended
from resource o
left join resource d on d.vehicle_ID = o.ID
left join week_days_availability_to_resource aw on d.ID=aw.resource_ID
left join week_days_availability w on aw.calendar_ID=w.ID
where o.IS_DELETED <> true
我有以下查询
SELECT *
FROM tbl_events AS event
LEFT JOIN tbl_business_events AS bevent
ON event.event_id = bevent.event_id
LEFT JOIN tbl_business_sector AS bsec
ON event.event_id = bsec.event_id
LEFT JOIN tbl_sectors AS sector
我有以下查询
select dc.dateasdate as 'Date', count(Practice) as 'Total Enquiries', dp.practice, de.Origin
from dim.Practice dp
left join fact.enquiry fe on fe.PracticeSKey = dp.PracticeSKey
left join dim.EnquiryOrigin de on de.EnquiryOriginSKey = fe.EnquiryOriginSKey and de.Ori
我需要将隐式join by WHERE子句更改为table2表的JOIN语句。我一直面临一个wierd错误。我无法制作一个简化的版本来复制错误,下面是完整的查询。
这样做是可行的:
SELECT SELECT
*
FROM table1 s
LEFT JOIN table2 ON table2.id = t.OBYW_ID
LEFT JOIN table3 k ON s.kasta_id = k.id
LEFT JOIN table4 m ON m.id = k.mpk_id
LEFT JOIN table5 a ON a.symbol=SUBSTR(m.kod,-5)
L
我使用子subselect获取所需的行I,如下所示:
SELECT
p.id, c.id as category_id
FROM
(SELECT id FROM products p WHERE p.id > 6319055 ORDER BY id LIMIT 1000) prods
LEFT JOIN
products p ON p.id = prods.id
LEFT JOIN
categories c ON (c.id = p.category_id)
WHERE
c.active = 1
ID 6319055是我最后选择的ID。我在选择数
我有4个表,如下所示:SCHEDULES,LOCATION
我需要从所有表中返回所有行,以便运行此查询,并为不存在的任何值添加空值:
SELECT.....
FROM (schedule s LEFT JOIN schedule_override so ON so.schedule_id = s.id)
LEFT JOIN schedule_location_override slo ON slo.schedule_override_id = so.id
LEFT JOIN location l ON slo.location_id = l.id
ORDER BY s.id, so.id, s
这两个查询输出不同的结果,
我有疑问AND m.status = $1 ...每个条件跟随左连接表或移动到最后部分,这是不同的?
查询1
SELECT count(mua.*)
AS total_row_count
FROM media_user_action mua
LEFT JOIN media m ON m.id = mua.media_id
AND m.status = $1
LEFT JOIN gallery_media gm ON gm.id = mua.media_id
LEFT JOIN gallery g ON g.id = gm
我想做以下几点:
在基于IDa的tableA上联接并返回表中的结果,其中tableA.ClientID = @clientId
这很好,但是我知道想要添加一个“通配符”值,比如如果@clientId是1,则从tableP返回所有内容。
我目前有以下情况:
// @clientId is a parameter passed into the stored procedure
SELECT *
FROM tableP tp
LEFT JOIN tableA ta ON ta.IDa = tp.IDa
WHERE ta.ClientID = @clientId
就像我说的,上面的内容很好,但是我
SELECT *
FROM `user`
LEFT JOIN `user_group`
ON `user_group`.`userid` = `user`.`userid`
LEFT JOIN `email_template`
ON `email_template`.`user_id`=`user`.`userid`
WHERE `user`.`agent_id`='123'
AND `email_template`.`type`='advertise'
这就是我的sql语句。我加入了表user,user group和email_tem
我有关于多个表的follwong查询
SELECT DISTINCT b.BoxBarcode as [Box Barcode], (select case when b.ImagesCount IS NULL
then 0
else b.ImagesCount end) as [Total Images], s.StageName as [Current Stage] ,d.DocuementTypeName as [Document Type],
u.UserName as [Start User],uu.UserName as [
我有以下疑问:
select * from ACADEMIC a
left join RESIDENCY r on a.PEOPLE_CODE_ID = r.PEOPLE_CODE_ID
where a.ACADEMIC_TERM='Fall'
and r.ACADEMIC_TERM='Fall'
and a.ACADEMIC_SESSION=''
and a.ACADEMIC_YEAR = (Select Year(GetDate()))
and r.ACADEMIC_YEAR = (Select Year(GetDate()))
and
我希望使用以前的select结果来确定要使用哪个join语句,如下所示:
select a.a1,
b.b1,
c.c3
from table_a a
left join table_b b
on a.a_join_column = b.b_join_column
if (b.b1 = 1,
left join (
select c1 as c_join_column, c3
from table_c
where c4 is null
) c
on a.tid = d.tid,
left join
我试图使用JPA和条件API构建动态查询,但不使用元模型。
各表如下:
Foo:
ID
1
2
3
4
Bar:
ID FooID Number
1 2 44
2 2 55
3 3 55
我想检索所有的Foo实体,其中没有匹配的栏有44号。(预期Foo 1、3、4)
SQL应该如下所示:
select distinct *
from Foo foo0_
left join Bar bar0_ on foo0_.ID=bar0_.FooID and bar0_.Number=44
where bar0__.id is null;
只有当参数@param不是null或具有特定值时,我才需要对表B进行连接。
我不想添加IF/ELSE,因为这个商店真的很大。
我的商店返回超过50个参数,并与10个表连接。
如果符合声明的@param条件,我只想跳过其中的一个联接。
我希望有人能帮我。提前感谢!
更新
DECLARE @param INT = NULL;
SELECT
/* HERE GOES A LOOT OF PARAMETERS */
FROM
T0 T
INNER JOIN T1 B ON T.attr1 = B.attr1
LEFT JOIN T2 TFD ON T.att
我有3张表- domains, keywords, comments
表domains是“主”表,所有这些表都有公共字段domain_id。我需要编写一个查询,如果在其他(keywords和comments)表中没有匹配的记录,则从domains表中选择记录。
我可以编写一个查询来选择匹配的记录,但是如何实现相反的结果呢?看着,我写了一个查询:
SELECT * FROM domains
LEFT JOIN keywords ON domains.domain_id=keywords.domain_id WHERE keywords.domain_id IS NULL
LEFT JOIN
我有三张桌子。下面的SQL应该解释了我需要的一些数据:
SELECT m.FirstName, m.LastName, m.DOB, m.Gender, a.Address1, a.Address2, a.City,
a.State, a.Country, a.PostCode from Members m
LEFT JOIN Addresses a ON m.Id = a.MemberId
INNER JOIN AddressType at ON at.Id = a.AddressTypeId
WHERE m.Email = 'member2@test.com' AN
很容易理解为什么左外部连接是不可交换的,但我在理解它们是否具有关联性时遇到了一些麻烦。几个在线来源表明他们不是,但我还没有设法说服自己是这样的。
假设我们有三个表: A、B和C。
设A包含两列,ID和B_ID,其中ID是表A的主键,B_ID是表B的主键对应的外键。
设B包含两列,ID和C_ID,其中ID是表B的主键,C_ID是表C的主键对应的外键。
假设C包含两列,ID和VALUE,其中ID是表C的主键,VALUE只包含一些任意值。
那么(A left outer join B) left outer join C不应该等于A left outer join (B left outer joi
我最近试图提取一些结果,并且正在努力找出正确的查询来做到这一点。我见过的所有示例,甚至我的MySQL书都显示了如下所示:
SELECT *
FROM table_1
LEFT JOIN table_2 LEFT OUTER JOIN table_3 LEFT JOIN table_2
ON table_1.id = table_2.rel_id
AND table_1.id = table_3.rel_id
AND table_3.id = table_2.rel_id
WHERE table_1.some_col = some_vale;
这不起作用,相反,解决方案是:
SELECT *