用不同的表从sql制作strsql

时间:2014-05-18 12:27:38

标签: mysql sql join

所以我需要制作一个像这样的strsql:

strSQL = "SELECT "
strSQL = strSQL & " tblclips.fldclipid, "
strSQL = strSQL & " tblPlatenfirma.fldplatenfirmaID, "
strSQL = strSQL & " tblClips.fldUitvoerder, "
strSQL = strSQL & " tblClips.fldTitel, "
strSQL = strSQL & " tblPlatenfirma.fldnaam"
strSQL = strSQL & " FROM "
strSQL = strSQL & " tblClips "
strSQL = strSQL & " INNER JOIN tblPlatenfirma "
strSQL = strSQL & " ON tblClips.fldplatenfirmaid = tblPlatenfirma.fldplatenfirmaID"
strWHERE = ""

但是我得到了一个我不理解的SQL代码,结果我无法创建一个strSQL,我真的需要这个用于学校项目,我还剩下几天。这是我不明白的SQL:

选择tbluurroosterleerkracht.flduurroosterleerkrachtID AS uurroosterID,tblklas.fldnaam AS克拉斯,tbllokaal.fldnummer AS Hoofdlokaal,tblvak.fldvak AS Vak上升,tbllokaal_1.fldnaam AS LesLokaal,tbllokaal_2.fldbeschikbaar AS beschikbaar,tblleerkracht.fldnaam AS NaamLeerkrachtNormaal,tblleerkracht.fldvoornaam AS VoornaamLeerkrachtnormaal,tbldag.flddag AS Dag,tbllesuur.fldvan AS Van,tbllesuur.fldtot AS Tot FROM(((tbllokaal AS tbllokaal_2 RIGHT JOIN(tblvervangingen LEFT JOIN tblleerkracht AS tblleerkracht_1 ON tblvervangingen.fldleerkrachtID = tblleerkracht_1.fldleerkrachtID)ON = tbllokaal_2.fldlokaalID tblvervangingen.fldlokaalID)LEFT JOIN tbltaak ON tblvervangingen.fldtaakID = tbltaak.fldtaakID)LEFT JOIN tblleerkracht AS tblleerkracht_2 ON tbltaak.fldleerkrachtID = tblleerkracht_2.fldleerkrachtID)RIGHT JOIN(((tbllokaal AS tbllokaal_1 INNER JOIN(((tbldag INNER JOIN(tblklas INNER JOIN tbluurroosterleerkracht ON tblklas.fldklasID = tbluurroosterleerkracht.fldklasID)ON = tbldag.flddagID tbluurroosterleerkracht.flddagID)INNER JOIN tblvak ON tbluurroosterleerkracht.fldvakID = tblvak.fldvakID)INNER JOIN tbllokaal ON tblklas.fldlokaalID = tbllokaal.fldlokaalID)ON = tbllokaal_1.fldlokaalID tbluurroosterleerkracht.fldlokaalID)INNER JOIN tbllesuur ON tbluurroosterleerkracht.fldlesuurID = tbllesuur.fldlesuurID)INNER JOIN tblleerkracht ON tbluurroosterleerkracht。 fldleerkrachtID = tblleerkracht.fldleerkrachtID)ON tblvervangingen.flduurroosterleerkrachtID = tbluurroosterleerkracht.flduurroosterleerkrachtID ORDER BY tblleerkracht.fldnaam,tblleerkracht.fldvoornaam,tbldag.flddag,tbllesuur.fldvan;

1 个答案:

答案 0 :(得分:0)

这是一个不寻常的SQL查询。你确定它会产生你想要的结果吗?

在尝试理解代码时,对其进行格式化非常有用,这样您就可以清楚地看到它的每个部分。对于大型SQL查询和具有大量嵌套括号位的代码尤其如此。

这是应用了粗略格式的SQL ...

SELECT 
  tbluurroosterleerkracht.flduurroosterleerkrachtID AS uurroosterID,
  tblklas.fldnaam AS Klas,
  tbllokaal.fldnummer AS Hoofdlokaal,
  tblvak.fldvak AS Vak,
  tbllokaal_1.fldnaam AS LesLokaal,
  tbllokaal_2.fldbeschikbaar AS beschikbaar,
  tblleerkracht.fldnaam AS NaamLeerkrachtNormaal,
  tblleerkracht.fldvoornaam AS VoornaamLeerkrachtnormaal,
  tbldag.flddag AS Dag,
  tbllesuur.fldvan AS Van,
  tbllesuur.fldtot AS Tot 
FROM
 (
   (
    (tbllokaal AS tbllokaal_2 
     RIGHT JOIN (tblvervangingen 
                LEFT JOIN tblleerkracht AS tblleerkracht_1 
                ON tblvervangingen.fldleerkrachtID = tblleerkracht_1.fldleerkrachtID
                ) 
     ON tbllokaal_2.fldlokaalID = tblvervangingen.fldlokaalID
    ) 
    LEFT JOIN tbltaak 
    ON tblvervangingen.fldtaakID = tbltaak.fldtaakID
   )
   LEFT JOIN tblleerkracht AS tblleerkracht_2
   ON tbltaak.fldleerkrachtID = tblleerkracht_2.fldleerkrachtID
 ) 
 RIGHT JOIN 
 (
   (
     (tbllokaal AS tbllokaal_1 
      INNER JOIN 
       (
         (
           (tbldag 
            INNER JOIN 
             (tblklas 
              INNER JOIN tbluurroosterleerkracht 
              ON tblklas.fldklasID = tbluurroosterleerkracht.fldklasID
             ) 
            ON tbldag.flddagID = tbluurroosterleerkracht.flddagID
           ) 
           INNER JOIN tblvak 
           ON tbluurroosterleerkracht.fldvakID = tblvak.fldvakID
         )
         INNER JOIN tbllokaal 
         ON tblklas.fldlokaalID = tbllokaal.fldlokaalID
       ) 
       ON tbllokaal_1.fldlokaalID = tbluurroosterleerkracht.fldlokaalID
     ) 
     INNER JOIN tbllesuur 
     ON tbluurroosterleerkracht.fldlesuurID = tbllesuur.fldlesuurID
   ) 
   INNER JOIN tblleerkracht 
   ON tbluurroosterleerkracht.fldleerkrachtID = tblleerkracht.fldleerkrachtID
 ) 
 ON tblvervangingen.flduurroosterleerkrachtID = tbluurroosterleerkracht.flduurroosterleerkrachtID 
ORDER BY 
  tblleerkracht.fldnaam, 
  tblleerkracht.fldvoornaam,
  tbldag.flddag,
  tbllesuur.fldvan;

你有不明白的具体部分吗?

我认为尽管不了解SQL是如何工作的。您的字符串构建方法仍应作为将sql存储在程序变量中的方法。