2013-04-10 74 views
0

我想執行一個簡單的查詢,其中三個表連接在一起創建一個。 我一直想弄清楚爲什麼我沒有得到任何結果。MYSQL 3table連接查詢不起作用

這是我的查詢:

"SELECT b.band_naam, p.pod_omschr" 
+ " FROM bands b" 
+ " JOIN bandsperfestival bf ON b.band_id = bf.band_id" 
+ " JOIN podia p ON bf.pod_id = p.pod_id" 

我試圖做到這一點在Java中,因此報價。

這裏的表是什麼樣子:

Bands

Bandsperfestival(表橋) Bandsperfestival (bridge)

Podia Podia

可有人發現我的錯誤?

下面是一些的要求更多的代碼: 這是<%以內,%>標籤

 //ResultSet aanmaken voor alle groepen van op het festival 
     connectie.voerQueryUit("SELECT b.band_naam, p.pod_omschr" 
      + " FROM bands b" 
      + " JOIN bandsperfestival bf ON b.band_id = bf.band_id" 
      + " JOIN podia p ON bf.pod_id = p.pod_id", lijstParams); 
     ResultSet bands = connectie.haalResultSetOp(); 

與其他查詢相同的方法,完美的作品是這樣的:

 //ResultSet aanmaken voor het gekozen festival 
     connectie.voerQueryUit("SELECT f.fest_id, f.fest_naam, f.fest_locatie, f.fest_datum, f.fest_duur, f.fest_einddatum, f.fest_url" 
       + " FROM festivals f" 
       + " WHERE f.fest_naam = ?", lijstParams); 
     ResultSet fest = connectie.haalResultSetOp(); 
     fest.first(); 

並在我的html我這樣做:

<ul> 
    <% while (bands.next()) { %> 
    <li><%= bands.getString("band_naam") %></li> 
    <li>Podium: <%= bands.getString("pod_omschr") %></li> 
    <% } %> 
</ul> 

該變量連接即是一個具有這些功能的類的實例:

public void voerQueryUit(String query, List<String> parameters) 
{ 
    try 
    { 
     if(parameters.size() > 0) 
     { 
      //Reden preparedStatement: geen SQL-Injectie! 
      prepStatement = connectie.prepareStatement(query); 

      //Lijst met parameters uitlezen om de preparedStatement op te vullen 
      for(int i=1; i<=parameters.size(); i++) 
      { 
       prepStatement.setString(i, parameters.get(i-1)); 
      } 
      inhoudQuery = prepStatement.executeQuery(); 
     } 
     else 
     { 
      statement = connectie.createStatement(); 
      inhoudQuery = statement.executeQuery(query); 
     } 
    } 
    catch(Exception e) 
    {} 
} 

public ResultSet haalResultSetOp() 
{ 
    return inhoudQuery; 
} 

我知道這個工作方式,因爲它已被多次使用。

+0

它應該工作,因爲沒有任何錯誤。 – 2013-04-10 13:33:18

+0

你有哪個錯誤? – 2013-04-10 13:35:22

+0

這就是我認爲的,它應該工作... 我沒有得到任何錯誤,我使用glassfish和phpmyadmin。 日誌中也沒有錯誤。我沒有得到任何結果。 – DerpyNerd 2013-04-10 13:37:35

回答

0

Query沒有問題。

我覺得錯誤Code.

+0

我不這麼認爲,當做相同的查詢,但只選擇pod_id我得到我想要的結果。 – DerpyNerd 2013-04-10 13:42:18

+0

你在哪裏將結果存儲在'Array'或'String'? – Luv 2013-04-10 13:43:48

+0

只有在'ArrayList'中傳遞的參數。一切都結束了'ResultSet' – DerpyNerd 2013-04-10 13:50:43

-1

將這項工作,而不是:

SELCT b.band_naam, p.pod_omschr 
FROM bands b, bandsperfestival bf, podia p 
WHERE b.band_id = bf.band_id AND bf.pod_id = p.pod_id 
+0

我沒有給你downvote;) 不幸的是,這是行不通的。 – DerpyNerd 2013-04-10 13:39:38

+0

downvote,苛刻...誰downvoted,任何理由? – jcsbrotha 2013-04-10 13:42:22

+1

我沒有downvote,但我可以建議一些原因:(i)您使用隱式而不是顯式連接語法 - 前者通常被棄用; (ii)你拼錯了SELECT; (iii)該查詢在功能上與原始相同,因此可能會出現與原始相同的問題。 – 2013-04-10 13:45:42