- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的问题可以分解为以下几点:
我有四张 table
CREATE TABLE table_1 (
table_1_id int,
table_1_name varchar(45),
table_1_team varchar(45)
);
CREATE TABLE table_2 (
table_2_id int,
table_1_id int,
table_2_name varchar(45)
);
CREATE TABLE table_3 (
table_4_id int,
table_1_id int
);
CREATE TABLE table_4 (
table_4_id int,
table_4_name varchar(45)
);
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (1, 't1-name-1-t4', 'team1');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (2, 't1-name-2-t1', 'team1');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (3, 't1-name-3-t2', 'team1');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (4, 't1-name-4', 'team dont-regard-me-1');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (5, 't1-name-5-t1', 'team2');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (6, 't1-name-6-t2', 'team2');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (7, 't1-name-7', 'team dont-regard-me-2');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (8, 't1-name-8-t4', 'team3');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (9, 't1-name-9-t1', 'team3');
INSERT INTO table_1 (table_1_id, table_1_name, table_1_team) VALUES (10, 't1-name-10-t2', 'team3');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (1, 3, 't2-name-1');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (2, 3, 't2-name-2');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (3, 6, 't2-name-3');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (4, 6, 't2-name-4');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (5, 6, 't2-name-5');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (6, 10, 't2-name-6');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (7, 10, 't2-name-7');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (8, 66,'t2-name-8');
INSERT INTO table_2 (table_2_id, table_1_id, table_2_name) VALUES (9, 77, 't2-name-9');
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (1, 1);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (2, 1);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (3, 1);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (6, 1);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (7, 8);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (8, 8);
INSERT INTO table_3 (table_4_id, table_1_id) VALUES (9, 8);
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (1, 't4-name-1');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (2, 't4-name-2');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (3, 't4-name-3');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (4, 't4-name-4');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (5, 't4-name-5');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (6, 't4-name-6');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (7, 't4-name-7');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (8, 't4-name-8');
INSERT INTO table_4 (table_4_id, table_4_name) VALUES (9, 't4-name-9');
和我想组合的三个选择查询
SELECT
t1.table_1_id AS t1_id,
t1.table_1_name AS t1_name
FROM
table_1 t1
WHERE
t1.table_1_team IN ('team1', 'team2', 'team3') AND
t1.table_1_id NOT IN (1,3,6,8,10);
SELECT
t1.table_1_id AS t1_id,
t4.table_4_id AS t4_id,
t4.table_4_name AS t4_name
FROM
table_4 t4,
table_1 t1,
table_3 t3
WHERE
t1.table_1_id IN (1,3,6,8,10) AND
t3.table_1_id = t1.table_1_id AND
t3.table_4_id = t4.table_4_id;
SELECT
t1.table_1_id,
t2.table_2_id,
t2.table_2_name
FROM
table_2 t2,
table_1 t1
WHERE
t1.table_1_id IN (1,3,6,8,10) AND
t1.table_1_id = t2.table_1_id;
我想要的输出如下:
| t1_id | t1_name | t1_team | t2_id | t2_name | t4_id | t4_name |
+-------+--------------+---------+--------+-----------+--------+-----------+
| 1 | t1-name-1-t4 | team1 | (null) | (null) | 6 | t4-name-6 |
| 1 | t1-name-1-t4 | team1 | (null) | (null) | 1 | t4-name-1 |
| 1 | t1-name-1-t4 | team1 | (null) | (null) | 3 | t4-name-3 |
| 1 | t1-name-1-t4 | team1 | (null) | (null) | 2 | t4-name-2 |
| 2 | t1-name-2-t1 | team1 | (null) | (null) | (null) | (null) |
| 3 | t1-name-3-t2 | team1 | 1 | t2-name-1 | (null) | (null) |
| 3 | t1-name-3-t2 | team1 | 2 | t2-name-2 | (null) | (null) |
| 5 | t1-name-5-t1 | team2 | (null) | (null) | (null) | (null) |
| 6 | t1-name-6-t2 | team2 | 4 | t2-name-4 | (null) | (null) |
...
这是我到目前为止得到的:
SELECT
t1.table_1_id AS t1_id,
t1.table_1_name AS t1_name,
linkTable1.table_2_id AS t2_id,
linkTable1.table_2_name AS t2_name,
linkTable2.table_4_id AS t4_id,
linkTable2.table_4_name AS t4_name
FROM
table_1 t1
LEFT JOIN (
SELECT
table_2.table_2_id,
table_2.table_2_name,
table_2.table_1_id
FROM
table_2) linkTable1
ON
t1.table_1_id = linkTable1.table_1_id
LEFT JOIN (
SELECT
table_3.table_1_id,
table_4.table_4_id,
table_4.table_4_name
FROM
table_4
INNER JOIN
table_3
ON
table_4.table_4_id = table_3.table_4_id) linkTable2
ON
t1.table_1_id = linkTable2.table_1_id;
但这种方法会导致不需要的行:
...
| 4 | t1-name-4 |team dont-regard-me-1 | (null) | (null) | (null) | (null) |
...
所以我必须找到一种方法来正确地集成 where 子句,即一方面
t1.table_1_team IN ('team1', 'team2', 'team3') AND
t1.table_1_id NOT IN (1,3,6,8,10);
另一边
t1.table_1_id IN (1,3,6,8,10)
有人可以帮助我吗?
最佳答案
我认为这符合您的要求。 至少它稍微简化了您的查询。
SELECT
t1.table_1_id AS t1_id , t1.table_1_name AS t1_name , t1.table_1_team AS t1team
, t2.table_2_id AS t2_id , t2.table_2_name AS t2_name
, t4.table_4_id AS t4_id , t4.table_4_name AS t4_name
FROM table_1 t1
LEFT JOIN table_2 t2 ON t2.table_1_id = t1.table_1_id
LEFT JOIN table_4 t4 ON EXISTS ( -- keep the junction table out of the main query
SELECT 1
FROM table_3 t3
WHERE t3.table_1_id = t1.table_1_id
AND t3.table_4_id = t4.table_4_id
)
WHERE 1=1
AND t1.table_1_team IN ('team1', 'team2', 'team3')
-- AND t1.table_1_id IN (1,3,6,8,10)
-- AT LEAST ONE of the two left joins must have matching rows.
-- OR t2.table_2_id IS NOT NULL OR t4.table_4_id IS NOT NULL
ORDER BY 1,4,6
;
关于mysql - 如何将选择查询与 'negated ranges' 结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51856799/
好吧,虽然模式 [abc] 匹配单个字符 a、b 或 c 时,模式 [^abc] 匹配任何不是的给定字符 a、b 或c. 现在,如果我在上面的语句中用 string 替换 character,如果我还
我正在学习 Haskell atm,现在我找到了这个功能 const const (negate 1) (negate 2) 3 这个函数的结果是 -2 .我不明白为什么结果不是 -2。 const
我可以有 /[abcd]/、/(ab|cd)/ 和 /[^wxyz]/。为什么不是 /(^wx|yz)/ Apparently您可以通过简单地将功能与其他功能组合在一起来实现完全相同的效果,如下所示:
我正在尝试在我的 C++ 14 代码中执行一个简单的操作 pow(-0.89,-0.67),它给出了一个 NaN 作为结果。在 SciLab 中执行相同操作时,结果为 -1.08。在 C++ 中有什么
我又在与正则表达式作斗争了。我一直在尝试添加使用转义字符来转义自定义标记,例如 至 和 至 .在乔治的帮助下,here , 在尝试转义方法之前,以下表达式会产生所需的结果。 ('This is a
我使用三个值(=页数)A , B , C对于属性(property)is of type . 某些页面只有一个值 is of type ,某些页面具有所有三个值。 我想要#ask对于类型为 A 的页面
我正在尝试使用普罗米修斯数据源在 Grafana 中绘制条形图。 我的简单查询如下所示: max_over_time(energy_monitor_watthour_today[1d]) 我将 Gra
我正在尝试使用 if GNU 中的函数(与条件语句之一相反)make如果未定义特定变量,则为了将单词添加到列表中。我最终这样做的方法是将第二个参数留空,同时提供第三个参数,如下所示: FOO := b
以下程序应打印数组元素的总和是正数还是负数: #include #define ARR_SIZE 5 int main() { int array[ARR_SIZE] = {1,-2,3,4,
我试图在公式中替换所有缺少前面零的 float 。例如: “4+.5”应该变成:“4+0.5” 现在我读到 JavaScript 不支持向后看,那么我该如何实现呢?当前面有数字时,以下代码也会替换:
我有这个 64x64 二维数组 该阵列的数据可在此处下载 - http://m.uploadedit.com/ba3s/1494223164755.txt 现在,我想复制这个数组,其中具有最高值的区域
我在研究 String 及其构造函数时发现了一些我无法解释的行为。 我创建了以下方法 public static String negate(String s) { byte[] b = s.
我在我的应用程序的 Crashlytics 中看到了这次崩溃。我不知道哪里出了问题。 有人对为什么会发生这种崩溃有任何建议吗? Fatal Exception: java.lang.IllegalAr
我有一些异常值的数据集,例如以下 x <- rnorm(1000,0,20) x <- c(x, 500, -500) 如果我们以此绘制在线性x轴刻度上,我们将看到 histogram(x) 我想出了
tl;dr:我该如何做类似下面编写的代码的事情: def notFunctor[M[_] : Not[Functor]](m: M[_]) = s"$m is not a functor" 'Not[
我有一个程序可以替换文件中的内容。但是却导致了IO异常,我不知道我哪里逻辑错了? 代码如下: import java.io.File; import java.io.RandomAccessFile;
我正在验证整数是否为零或更大。将需求描述为“零或更大”感觉过于冗长。说“非负面”会引入负面语言,我会尽量避免。 在描述必须为零或更大的值时,您使用什么简洁的描述符? 最佳答案 positiveValu
我使用的是tinyMCE版本3,我使用的是富文本编辑器,它会在输入时计算剩余的字符数。由于 maxLength 属性不适用于tinyMCE3。我已经以这种方式进行了硬编码,但它也计算了空白字符
下面的示例在调用look_back_1()或look_back_2()时应该崩溃。原因:当对无符号变量求反时,结果应保持无符号。 #include int look_back_1(int *arr,
虽然我阅读了大量有关该主题的文章(特别是使用环视),但我不明白是否可以使用正则表达式解决这种更一般的情况。 设置: 1) 在 中传递了一个输入正则表达式2) 输入正则表达式嵌入到负正则表达式中,这样
我是一名优秀的程序员,十分优秀!