0

したがって、他の3つのテーブルに相互接続されているテーブル番号4から特定のデータを取得したいユーザーは$ faidを選択し、必要なデータを出力します

表 1 (dbo.FAID)
FAID(pk)
PCID(fk)
UserID(fk)

表 2 (dbo.users)
UserID(PK)
EmployeeName

表 3(dbo.SubDeptTransfer)
TransferID(pk)
UserID(fk)
SubDeptID(fk)

表 4 (SubDept)
SubDeptID(PK)
DeptID(fk)

表 5(部門)
DeptID(PK)
部門

<?php
$faidf=$_POST['faidf'];
ini_set("display_errors","on");
$conn = new COM("ADODB.Connection");
   try {
   $myServer = "WTCPHFILESRV\WTCPHINV";
   $myUser = "sa";
   $myPass = "P@ssw0rd";
   $myDB = "wtcphitinventory";   
   $connStr = "PROVIDER=SQLOLEDB;SERVER=".$myServer.";UID=".$myUser.";PWD=".$myPass.";DATABASE=".$myDB;
   $conn->open($connStr); 
         if (! $conn) {
            throw new Exception("Could not connect!");
        }
   }

   catch (Exception $e) {
      echo "Error (File:): ".$e->getMessage()."<br>";
   }
if (!$conn)
  {exit("Connection Failed: " . $conn);}
  echo "<center>";
   echo "<table border='0' width ='100%' style='margin-left:90px'><tr><th></th><th></th></tr>";
   $sql_exp = "SELECT  e.Department
FROM    dbo.FA_PC a
        INNER JOIN dbo.users b
        on a.UserID = b.UserID
        INNER JOIN dbo.SubDeptTransfer c
            ON a.UserID = c.UserID  
        INNER JOIN dbo.SubDept d
            ON a.SubDeptID = d.SubDeptID
        INNER JOIN dbo.department e
            ON a.DeptID = e.DeptID
WHERE   a.FAID = $faidf";    
   $rs = $conn->Execute($sql_exp);  

    echo "<tr><td>".$rs->Fields("Department")."</tr></td>";
       $rs->Close();   

?>

私が得ることができるのは「無効な列名 'SubDeptID」だけです。これは、選択ステートメントを台無しにしていると思いますが、列名が正しいことは確かです

FAID->users->subdepttransfer->subdept->department

いくつの内部結合が行われたか、または 3 つ以上のテーブルを実行できないという競合がありますか? はいの場合、5 つのテーブルを接続する方法はありますか?

4

1 に答える 1

2

私の知る限り、制限はありません。少なくとも 5 つのテーブルは問題になりません。あなたの場合、SQL ステートメントにタイプミスがあります。エイリアスaを使用していますが、cを使用するつもりだったと思います(DeptIDも修正しました-SubDeptIDを修正した後の次のエラー)。このステートメントを試してください

SELECT  e.Department
FROM    dbo.FA_PC a
        INNER JOIN dbo.users b
        on a.UserID = b.UserID
        INNER JOIN dbo.SubDeptTransfer c
            ON a.UserID = c.UserID  
        INNER JOIN dbo.SubDept d
            ON c.SubDeptID = d.SubDeptID
        INNER JOIN dbo.department e
            ON d.DeptID = e.DeptID
WHERE   a.FAID = $faidf
于 2013-02-11T05:35:39.163 に答える