如何使用django QuerySet API跨M2M关系芯片创建完整外部联接的查询?
它不受支持,一些提示创建我自己的经理来做这件事将是受欢迎的.
编辑补充: @ S.Lott:感谢您的启发.OUTER JOIN的需求来自应用程序.它必须生成一个报告,显示输入的数据,即使它仍然不完整.我不知道结果将是一个新的类/模型.你的提示会对我有所帮助.
当我执行左外连接时,我希望获得查询在添加连接表之前返回的所有记录,但它只返回与连接表匹配的记录(即:表中不存在'092387'的记录'文档',所以我只想为该记录的'filename'字段返回null.)我做错了什么?
mysql> select documentation_reference.ref_docnumber
, documentation.filename
from documentation_reference
left outer join documentation on ref_docnumber=documentation.docnumber
where documentation_reference.docnumber='TP-036'
and documentation.status!=3;
+---------------+-----------------+
| ref_docnumber | filename |
+---------------+-----------------+
| SOP-0042 | SOP-0042r39.pdf |
+---------------+-----------------+
1 row in set (0.00 sec)
mysql> select ref_docnumber
from documentation_reference
where documentation_reference.docnumber='TP-036';
+----------------------+
| ref_docnumber |
+----------------------+
| 092387 |
| 1100218B |
| Applicable Item Spec |
| SOP-0042 |
+----------------------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud) 标准R表达式outer(X, Y, f)求值为矩阵,其第(i,j)个条目具有该值f(X[i], Y[j]).
我想实现这个函数multi.outer,一个n维泛化outer:multi.outer(f, X_1, ..., X_n),其中f是一些n元函数,会产生一个(长度(X_1)*...*长度(X_n))数组,其中(i_1,... .,i_n)-th entry具有f(X_1[i_1], ..., X_n[i_n])所有有效索引集(i_1,...,i_n)的值.显然,对于每个i在{1,...,N},的所有元素X_i中multi.outer(f, X_1,...,X_i,..., X_n)必须是可允许的第i个参数的函数f.对于n = 2的情况,multi.outer会做同样的事情outer,虽然它会有不同的签名(IOW,multi.outer(f, X, Y)相当于outer(X, Y, f)).
重要的是要注意,尽管参数X_1,...,X_n multi.outer都是向量,但它们不一定都具有相同的模式.例如,X_1和X_2可以分别为c(1, 2, 3)和LETTERS[10:20].
谢谢!
假设我有两个非常大的列表{a1,a2,...}和{b1,b2,...},其中所有ai和bj都是大型稀疏数组.为了提高内存效率,我将每个列表存储为一个全面的稀疏数组.
现在我想在所有可能的ai和bj对上计算一些函数f,其中每个结果f [ai,bj]再次是稀疏数组.顺便提一下,所有这些稀疏阵列都具有相同的尺寸.
而
Flatten[Outer[f, {a1, a2, ...}, {b1, b2, ...}, 1], 1]
Run Code Online (Sandbox Code Playgroud)
返回所需的结果(原则上)它似乎消耗了过多的内存.并非最不重要,因为返回值是稀疏数组的列表,而一个全面的稀疏数组在我感兴趣的情况下效率更高.
是否有上述用途的有效替代方案Outer?
更具体的例子:
{SparseArray[{{1, 1, 1, 1} -> 1, {2, 2, 2, 2} -> 1}],
SparseArray[{{1, 1, 1, 2} -> 1, {2, 2, 2, 1} -> 1}],
SparseArray[{{1, 1, 2, 1} -> 1, {2, 2, 1, 2} -> 1}],
SparseArray[{{1, 1, 2, 2} -> -1, {2, 2, 1, 1} -> 1}],
SparseArray[{{1, 2, 1, 1} -> 1, {2, 1, 2, 2} -> 1}],
SparseArray[{{1, 2, …Run Code Online (Sandbox Code Playgroud) 我在mySQL中有一个表,其中'id'列是PRIMARY KEY:
CREATE TABLE `USERS` (
`ID` mediumint(9) NOT NULL auto_increment,
.....
PRIMARY KEY (`ID`),
KEY `id_index` (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=267 DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
我还添加了一个索引如下:
CREATE INDEX id_index ON USERS (id);
Run Code Online (Sandbox Code Playgroud)
我需要这样做吗?或者主键是否自动编入索引?
最终目的是加速在表USERS的id列上加入的查询.
谢谢
我正在通过GalaXQL教程学习SQL.
我无法弄清楚以下问题(练习12):
使用"starname","startemp","planetname"和"planettemp"列生成明星ID低于100的星列表.该列表应包含所有星号,未知数据填写为NULL.像往常一样,这些价值观是虚构的.用((class + 7)*强度)*1000000计算恒星的温度,并根据恒星的温度减去50倍轨道距离计算行星的温度.
当您有需要连接在一起的子查询项"AS"时,编写LEFT OUTER JOIN查询的语法是什么?
这是我有的:
SELECT stars.name AS starname, startemp, planets.name AS planetname, planettemp
FROM stars, planets
LEFT OUTER JOIN (SELECT ((stars.class + 7) * stars.intensity) * 1000000 AS startemp
FROM stars)
ON stars.starid < 100 = planets.planetid
LEFT OUTER JOIN (SELECT (startemp - 50 * planets.orbitdistance) AS planettemp
FROM planets)
ON stars.starid < 100
Run Code Online (Sandbox Code Playgroud)
这是数据库架构(抱歉,由于低代表而无法发布图像文件):
CREATE TABLE stars (starid INTEGER PRIMARY KEY,
name TEXT,
x DOUBLE NOT NULL,
y DOUBLE NOT NULL,
z DOUBLE NOT …Run Code Online (Sandbox Code Playgroud) 多年来我一直在使用它,所以现在是时候充分理解它了.假设一个这样的查询:
SELECT
*
FROM a
LEFT JOIN b ON foo...
LEFT JOIN c ON bar...
Run Code Online (Sandbox Code Playgroud)
该文件告诉我们,
T1 { [INNER] | { LEFT | RIGHT | FULL } [OUTER] } JOIN T2 ON boolean_expression
LEFT OUTER JOIN首先,执行内连接.然后,对于T1中不满足与T2中的任何行的连接条件的每一行,在T2的列中添加具有空值的连接行.因此,对于T1中的每一行,连接表始终至少有一行.
问题很简单:T1在这种情况下是什么?是a吗?或者是a LEFT JOIN b ON foo吗?(或者,它是一样的吗?)
我创建了2个表
CREATE TABLE table1(customerName VARCHAR(20),custid NUMBER ,order_id NUMBER ,price NUMBER );
CREATE TABLE table2(id NUMBER ,salary NUMBER );
Run Code Online (Sandbox Code Playgroud)
现在,我尝试使用查询
SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left join table2 t2 ON t1.custid = t2.id;
SELECT t1.customername,t1.custid,t2.salary FROM table1 t1 left outer join table2 t2 ON t1.custid = t2.id;
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的输出.他们在工作中内部有什么区别吗?或者都是一样的!?
如何在pandas中合并两个数据框?
例如,假设我们有这两个数据框:
import pandas as pd
s1 = pd.DataFrame({
'time':[1234567000,1234567005,1234567009],
'X1':[96.32,96.01,96.05]
},columns=['time','X1']) # to keep columns order
s2 = pd.DataFrame({
'time':[1234567001,1234567005],
'X2':[23.88,23.96]
},columns=['time','X2']) # to keep columns order
Run Code Online (Sandbox Code Playgroud)
它们可以与pandas.DataFrame.merge(s3 = pd.merge(s1,s2,how='outer'))或 pandas.merge(s3=s1.merge(s2,how='outer'))合并,但它不适用.相反,我希望合并的数据框替换内存中的s1.
outer-join ×10
sql ×5
join ×4
mysql ×2
dataframe ×1
django ×1
indexing ×1
inner-join ×1
left-join ×1
merge ×1
oracle ×1
pandas ×1
postgresql ×1
python ×1
r ×1
reduce ×1
sparse-array ×1
subquery ×1