簡體   English   中英

如何在一個語句中查詢幾個MYSQL表

[英]how to query several MYSQL tables in one statement

有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]和result [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. 這都是錯誤的方法。 如果不是,最好的方法是什么。

有沒有一種方法可以在單個語句中查詢每個表,然后將結果填充到名為results的數組中。

所以我需要的結果是一個示例數組:

result [0]將可見數據設置為1 result [1]將可見數據設置為1 result [2]將可見數據設置為0

我現在按照您所說的重組了桌子。 使用聯接可以在一個查詢中獲得我需要的所有信息。

選擇*從categories聯接allNews上的allNews.catID = Categories.catID WHERE category.visible = 1 AND Categories.siteID ='+ p.siteID;

沃比先生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM