最近迁移了一台服务器,我发现了这个"错误",我有mysql作为数据库,我想要的(我不是SQL的专家),是加入2个相关的表由1:N组成,例如,
Table 1: Badges_Person
Table 2: Badges
徽章是带徽章的表格,Badges_Person包含类似(id_badge,id_person)的关系,简单,呃? 那么这个SQL查询似乎总能正常工作:
SELECT id, nombre, descripcion, insignias.time, obtained
FROM insignias LEFT OUTER JOIN
(SELECT *, '1' as obtained
FROM insignias_user
WHERE insignias_user.username = 'Octal'
) as insignias_user_seleccionado
ON insignias.id = insignias_user_seleccionado.id_insignia;
此查询的输出是带有'获得'的徽章列表。列(0或1)表示用户是否'八进制'有没有那个徽章。
所以...,现在,我有作为DB的mariadb,它返回一个不同的输出,其中所有的行都被标记为'获得' = 1。
我来到这里是因为据我所知,我已经抛弃了所有愚蠢的错误。
答案 0 :(得分:2)
我不能说为什么查询不起作用。这似乎是一个数据问题 - 所有行匹配。
但是,有一种更好的方法来编写查询:
string form = comboBox1.Text;
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + form + "$]", conn);
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
这样效率更高,因为中间表不需要实现,数据库可以在'use strict';
var React = require('react');
var mountCount = 0;
var MyComponent = React.createClass({
getInitialState: function () {
return {
instanceNumber: mountCount
};
},
componentDidMount: function () {
mountCount++;
},
render: function () {
return <div>I am instance no. {{this.state.instanceNumber}}.</div>;
}
});
module.exports = MyComponent;
上使用适当的索引。
另请注意:我将列引用更改为限定列名。表别名可能不正确。
答案 1 :(得分:0)
SELECT i.id, i.nombre, i.descripcion, i.time, IF(ius.id_insignia IS NULL, 0, 1)
FROM insignias i LEFT OUTER JOIN insignias_user ius
ON i.id = ius.id_insignia AND ius.username = 'Octal';
好的,它再次起作用,谢谢。