SELECT name -- Now... If a customer name could duplicate... that's a different problem in the data.
FROM customers
WHERE EXISTS (SELECT 1
FROM orders
INNER JOIN ordered_items ON ordered_items.cus_id = orders.cus_id
INNER JOIN products ON products.id = ordered_items.product_id
WHERE orders.cus_id = customers.id)
noreferrer”
简单地说:避免拉出您不需要的数据/表。
如果您所追求的只是客户表中的名称,并且不需要其他表中的值使用您的where子句中的语句;不要加入。加入是导致您的问题的原因,您不需要它。通过从联接中消除不需要的表,您可以消除问题。当您需要连接的那些表格中的字段时,请使用联接。一旦找到实例,就会存在于您的Where子句中。它可以使用索引,并且应该更快,因为它不必查询表并加入所有字段/行。如果您需要其他表格的值,那么您的答案是不同的。如果您无法使用不同的情况,因为您只想1行侧面应用/交叉应用,而订单的前1则应该这样做。我不确定为什么您甚至还有其他桌子涉及客户,而Ordered_items是您需要的吗?还是您没有告诉我们其他领域?
现在,您添加其他字段的第二秒可能会导致客户名称根据这些值复制:So by 可能是您需要的。那么...您想通过此查询回答的“业务问题”是什么?
如果您真正追求的只是下达订单的客户:
SELECT name
FROM customers
WHERE EXISTS (SELECT 1
FROM ordered_items ON ordered_items.cus_id = Customers.id
WHERE orders.cus_id = customers.id)
错误消息表明调试器无法与目标设备通信,因为处理器不处于停止状态或调试器在尝试读取寄存器之前无法停止目标CPU核心。
- 确保目标设备尚未运行。如果是
处理器已经执行代码,它不会停止
州和调试器将无法与之沟通。制作
确保目标设备在尝试之前不会执行代码
连接到它。 - 确保目标设备由PYOCD支持,并且您
安装了正确的PYOCD版本。检查PYOCD
文档以查看是否支持您的设备,并确保
您已经安装了PYOCD的正确版本。 - 检查目标设备和调试器之间的连接。
- 重置目标。
让我知道这些步骤是否对您有用。
我将在不使用 JOOQ
提供的 api
的情况下写下我知道如何做的方式。
这是使交易
注释与 r2DBC
连接一起工作的方法。
httpps://github.com/github.com/jooq/jooq/jooq/jooq/1222222222222218#ISSUECMESS/122218#ISSUECMESE 1213929029
您还可以使用 TransactionalOperator
使用 JOOQ
使用 Spring> Spring
以所描述的方式管理交易的连接,以手动执行交易多于。
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.reactor.awaitSingle
import kotlinx.coroutines.reactor.mono
import org.springframework.stereotype.Component
import org.springframework.transaction.reactive.TransactionalOperator
@Component
class TransactionOperation(private val transactionalOperator: TransactionalOperator) {
suspend operator fun <T> invoke(block: suspend CoroutineScope.() -> T): T = transactionalOperator
.transactional(mono(block = block))
.awaitSingle()
}
@Component
class Foo(private val transactionOperation: TransactionOperation) {
suspend fun saveByJooq(entity: Any): Any { TODO("Saving process here.") }
suspend fun call() {
// call saving process with transaction.
transactionOperation { saveByJooq("foo") }
}
}
您的意思是这样:
Option Explicit
Sub IfTest()
Dim dtToday As Date
Dim lastRow As Long
Dim TermDate As Range
dtToday = Date
lastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
Set TermDate = Worksheets("File Name").Range("AB2:AB" & lastRow)
For Each TermDate In TermDate
If TermDate > dtToday Then
TermDate.Offset(0, 5).Value = "1"
ElseIf TermDate = dtToday Then
TermDate.Offset(0, 5).Value = "1"
ElseIf TermDate < dtToday Then
TermDate.Offset(0, 5).Value = "0"
End If
Next TermDate
End Sub
为了获得可读性和简洁性,您应将 emp
列表
建模到
案例类cash class persona
的列表。然后,您可以直观地找出代码的其余部分。您可以以类似的方式建模 dept
list ,如果它变得太大且难以管理,但是对于此特定示例,我将其保留。
您可以使用 groupby
来创建
deptid-&gt;列表[persona]
,然后按薪水对其进行排序,仅采用您感兴趣的第一个 n
薪水,然后处理列表以使其匹配所需的确切输出。
顺便说一句,我建议 deptid
是 int
,就像 persona
的 ID
一样。
这是代码:
object Program extends App {
val emp = List(
(1, "10", "Smith", 3000),
(1, "10", "Smith", 3000),
(3, "10", "Williams", 1000),
(4, "10", "Jones", 2000),
(5, "10", "Brown", 5000),
(6, "20", "Brown", 8000),
(7, "10", "Jones", 11000),
(8, "20", "Brown", 5000),
(9, "20", "Brown", 8000)
)
val dept = List(
("Finance", "10"),
("Marketing", "20")
)
case class Persona(id: Int, deptId: String, name: String, sal: Int)
val personas = emp.map { case (id, deptId, name, sal) =>
Persona(id, deptId, name, sal)
}
val myMap: Map[String, List[Persona]] = personas.groupBy(_.deptId)
def topNSalariesGroupedBy(n: Int, deptId: String): String =
myMap(deptId).sortWith(_.sal > _.sal).take(n).map(_.sal).mkString(", ")
val n = 3
dept.foreach(dept =>
println(
s"Top $n salaries from department ${dept._1} are: ${topNSalariesGroupedBy(n, dept._2)}"
)
)
}
输出:
Top 3 salaries from department Finance are: 11000, 5000, 3000
Top 3 salaries from department Marketing are: 8000, 8000, 5000
与往常一样,涉及LINQ和SQL的任何内容,您需要在集合中进行操作:
static void GroupingMethod1()
{
var list =
from r in dc_RVT.Revit_Sync_Logs
group r by r.userId into g
select new DM_userSync
{
UserID = g.Key,
Name = dc_RVT.Revit_Users.FirstOrDefault(
user => user.uniqueId == dm.UserID
)?.networkUserName.Trim() ?? "unknown",
SyncCount = g.Count(),
ActiveDays = g.Select(r => r.startSyncTimeStamp.Date).Distinct().Count(),
}
.ToList();
Console.WriteLine(string.Join("\r\n", list.Select(dm => $"{dm.SyncCount} {dm.UserID}"));
}
另一个版本可能更有效:
var list = dc_RVT.Revit_Sync_Logs
.GroupBy(r => new { r.UserId, Date = r.startSyncTimeStamp).Date })
.Select(g => new { g.Key.UserId, g.Key.Date, Count = g.Count() })
.GroupBy(g => g.UserId)
.Select(g2 => new DM_userSync
{
UserID = g2.Key,
Name = dc_RVT.Revit_Users
.Where(user => user.uniqueId == g2.Key)
.Select(user => user.networkUserName).Min()?.Trim() ?? "unknown",
SyncCount = g2.Count(),
ActiveDays = g2.Sum(g => g.Count),
}
.ToList();
您不说您使用的是哪个RDBMS,但您可能需要以下索引
Revit_Sync_Logs (UserID, startSyncTimeStamp)
Revit_Users (uniqueId) INCLUDE (networkUserName)
就我而言,当我更新以下问题时,如下所示。
早些时候,我有3.141.59。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>4.1.4</version>
</dependency>
我将您的代码运送到我的机器中,它可以在Android设备上运行正常。希望您在Android或iOS设备上运行应用程序,因为 Flutter_webview:任何
版本都按照官方文档支持Android和iOS设备。
添加了修复高度
到图像: width:3REM
,还对 .payment-icons中的项目对齐
,例如 align-items :中心;
.payment-icons {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 10px;
max-width: 281px;
margin-left: auto;
margin-right: auto;
}
.payment-icons .icon-container {
min-width: auto;
}
.payment-icons .icon-container:not(:last-child) {
padding-right: 5px;
}
img {
display: block;
height: 3rem;
max-width: 100%;
}
img.payment-icon {
height: 3rem;
width: 100%;
}
<html>
<body>
<div class="payment-icons">
<div class="icon-container">
<img class="icon payment-icon payment-icon-1-payment-icon-visa" src="https://www.dropbox.com/s/wxk2xjzo52e2p9d/1-payment-icon-visa.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-2-payment-icon-mc" src="https://www.dropbox.com/s/vzev285htn06dmk/2-payment-icon-mc.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-3-payment-icon-amex" src="https://www.dropbox.com/s/eur0beji6qep55p/3-payment-icon-amex.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-4-payment-icon-up" src="https://www.dropbox.com/s/zvni8pygvob2vvi/4-payment-icon-up.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-5-payment-icon-cb" src="https://www.dropbox.com/s/227ujpum81gigsc/5-payment-icon-cb.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-6-payment-icon-visa-secure" src="https://www.dropbox.com/s/p5zr6atbjfac6i5/6-payment-icon-visa-secure.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
<div class="icon-container">
<img class="icon payment-icon payment-icon-7-payment-icon-mc_idcheck" src="https://www.dropbox.com/s/5y26briolgpmko6/7-payment-icon-mc_idcheck.svg?raw=1" aria-hidden="true" focusable="false" role="presentation">
</div>
</div>
</body>
</html>
根据先前的答案,这几乎是正确的。必须是
output = json.loads(输出[0])
当您使用中级类变量时会发生什么?
def var ologin as PCControl.PCC no-undo.
ologin = new PCcontrol.PCC().
ologin:AzureLogin( 'user', 'pass' ).
我认为只能像您一样直接使用OpenEDGE静态类。
无需 - 如果您对类文件进行了反编译,您会发现编译器无论如何都会为您做到这一点。我认为这使得代码非常可读,但是您可能想问自己为什么要这样做...如果您有信心将数字返回方法是正确的,那么这是做到这一点的好方法,IMO。
更改 android \ app \ src \ main \ androidmanifest.xm
l文件。
来自:
<application
android:name="io.flutter.app.FlutterApplication"
到:
<application
android:name="${applicationName}"
or
<application
android:name="your_app_name"
如果不存在,请添加这三行:
<meta-data
android:name="flutterEmbedding"
android:value="2" />
在 .bzl
文件中定义的宏中,需要使用 native>本机
前缀,例如 native> atnation.genrule
来引用“内置”规则和功能。
但是,不能在另一个规则实现功能的上下文中调用规则,只有您提及调用 ctx.actions.shell
时提到这一点。
您的服务器代码具有竞赛条件。
您应该致电 / 在调用 recvfrom ,之后不是。否则,将有可能在调用
recvfrom
和wsaresetevent
的调用之间到达,将事件对象设置为信号。在这种情况下,wsaresetevent
将将事件设置回非信号,从而导致您丢失有关可用新数据的通知。另外,根据 ,在读取插座的数据后,如果可以读取更多数据,则该事件将自动设置为再次发出信号,以指出更多数据可用。如果您在此之后调用
WSARESETEVENT
,则将事件设置回非信号,从而导致您丢失有关可用新数据的通知。这可能是您在问题中描述的行为的原因。您应该致电
wsaresetevent
/resetevent
在wsawaitformultipleevents
/waitgormultipletipleobjectssex
。请参阅文档wsawaitformultipleevents
对于代码示例(该示例使用重叠的I/O而不是wsaeventsElect
)。Your server code has a race condition.
Your should call
WSAResetEvent
/ResetEvent
before callingrecvfrom
, not afterwards. Otherwise, there is a possiblity that new data will arrive between the call torecvfrom
andWSAResetEvent
, setting the event object to signalled. In that case,WSAResetEvent
will set the event back to non-signalled, causing you to lose the notification of new data being available.Also, according to the documentation of
WSAEventSelect
, after reading data from a socket, if more data is available to be read, the event will automatically be set to signalled again, in order to indicate that more data is available. If you callWSAResetEvent
afterwards, then you will set the event back to non-signalled, causing you to lose the notification of new data being available. This is probably the reason for the behavior you describe in the question.You should rather call
WSAResetEvent
/ResetEvent
immediately afterWSAWaitForMultipleEvents
/WaitForMultipleObjectsEx
. See the documentation for the functionWSAWaitForMultipleEvents
for a code example (that example uses overlapped I/O instead ofWSAEventSelect
, though).使用函数waitformultipleObjects(MSDN)在插座上等待