如何在一个语句中查询几个MYSQL表

时间:2014-01-16 21:45:42

标签: mysql

有30个表(类别)都具有相同的结构,存储具有siteID字段的新闻项以在特定客户端上进行过滤。 客户端通过将字段visible(tinyint)字段设置为1或0来选择它们显示的表(类别)。

我有以下测试MYSQL可以正常工作。我使用的是Applicationcraft.com,因此语法与标准MYSQL不同,但您可以看到查询。

function _getAllData(cObj,p){
var result = [];
console.log('started');
selectObj=cObj.select().from('schoolNews').order('newsIDDESC').where('siteID=?',p.siteID);
result[0] = cObj.exec(selectObj); 
selectObj=cObj.select().from('schoolDocs').order('newsIDASC').where('siteID=?',p.siteID);
result[1] = cObj.exec(selectObj);

return result;
}

所以我有一个数组,其中包含result [0]&中每个表的结果。导致[1]。

所以我创建了以下内容:

function _getAllData(cObj,p){

var result = [];

console.log('started');

selectObj=cObj.select().from('schoolNews').order('newsIDDESC').where('siteID=?',p.siteID).where('visible=?',1);

result[0] = cObj.exec(selectObj); 
selectObj=cObj.select().from('schoolDocs').order('newsIDASC').where('siteID=?',p.siteID).where('visible=?',1);

result[1] = cObj.exec(selectObj);  
selectObj=Obj.select().from('schoolNews_copy').order('newsIDDESC').where('siteID=?',p.siteID).where('visible=?',1);

result[2] = cObj.exec(selectObj);
selectObj=cObj.select().from('schoolNews_copy').order('newsIDDESC').where('siteID=?',p.siteID).where('visible=?',1);

result[3] = cObj.exec(selectObj);
selectObj=cObj.select().from('schoolNews_copy').order('newsIDDESC').where('siteID=?',p.siteID;
result[4] = cObj.exec(selectObj).where('visible=?', 1); 

结果[30]。

我已经在schoolNews_copy中填充了1000条记录并从我的应用程序运行查询。

我收到了一个超时错误。

这是因为。

  1. 查询同一个表会导致问题。
  2. 这是一个错误的方法。 如果不是最好的方法。
  3. 有没有办法查询单个语句中的每个表,并将结果填充到名为results的数组中。

    所以我需要的结果是一个示例数组:

    result [0]将数据可见设置为1 result [1]将数据可见设置为1 result [2]将数据可见设置为0

1 个答案:

答案 0 :(得分:0)

我现在按照你的说法对桌子进行了重组。使用联接可以在一个查询中获得我需要的所有信息。

SELECT * FROM categories INNER JOIN allNews on allNews.catID = categories.catID WHERE categories.visible = 1 AND categories.siteID ='+ p.siteID;

MrWarby。