0

他のテーブル (cpu、ram、hdd など) に接続されているメイン テーブル (PC) がある場合、他の mysql テーブルから情報を取得するための適切な解決策が見つかりません。PC テーブルには、他のコンポーネント ID (cpu、ram、hdd..) があります。

私が使用しているコードがあります:

<?php
$query="SELECT * FROM pc ORDER by id";
mysql_query("SET NAMES 'UTF8'");
$result = mysql_query ($query);
$i=1;
echo '<table border = "1">';
echo '<tr><td><b>Nr.</b></td><td><b>CPU:</b></td><td><b>RAM</b></td><td><b>HDD</b></td><td><b>MB</b></td><td><b>GPU</b></td><td><b>Monitor</b></td></tr>';
while($nt=mysql_fetch_array($result)){
$proc = $nt['proc_id'];
$ram = $nt['ram_id'];
$hdd = $nt['hdd_id'];
$mb = $nt['mot_id'];
$gpu = $nt['gpu_id'];
$mon = $nt['monit_id'];

echo '<tr><td><b>'.$i++.'.</b></td><td>'.$proc.'</td><td>'.$ram.'</td><td>'.$hdd.'</td><td>'.$mb.'</td><td>'.$gpu.'</td><td>'.$mon.'</td></tr>';

}
echo '</table>';
?>
_______________________________
|Nr.  CPU  RAM  GPU HDD MONITOR |
| 1    1     2    1   2     2   |
---------------------------------

パーツ ID 番号のリストを取得していますが、代わりに、ID ではなく、他のテーブルにあるこれらのコンポーネントの実際の名前を出力する必要があります。私の質問は、PC テーブルにある ID を使用して、その ID を含むアイテム名を取得する方法です。例えば:

________________________________________________________
|Nr.  CPU        RAM      GPU        HDD     MONITOR    |
| 1  Intel    2gb adata    GTX 460   WD 1tb     LCD..   |
---------------------------------------------------------

私の質問を理解していただければ幸いです。

4

2 に答える 2

0

テーブル構造が表示されないため、ここにいくつかの疑似コードがあります。SQLクエリでは、他のテーブルに結合する必要があります。また、いずれかの列にnullがあるかどうかわからないため、のLEFT JOINS代わりにnullを指定する必要がある場合がありますINNER。JOINSは、これらのテーブルの特定の列間の関係に基づいて、2つ以上のテーブルのデータを結合します。RealNamesはpc以外のテーブルにあるため、RealNamesを取得するには、それらをクエリに取り込む必要があります。 INNER JOIN両方のテーブルで一致するものをすべて戻します。 LEFT JOIN右側のテーブルに一致するものがない場合でも、左側のテーブルのすべての行が表示されます。たとえば、nullモニターがある場合は、が必要にLEFTなります。そうしないと、行はまったく返されません。研究参加!

SELECT pc.Id,PC.RealName,cpu.cpuId,cpu.RealName, ram.ramId ,ram.RealName,hdd.hddId          ,hdd.RealName,...
FROM pc  
INNER JOIN cpu ON cpu.cpuId = pc.cpu
INNER JOIN ram ON ram.ramId = pc.ram 
INNER JOIN hdd ON hdd.hddId = pc.hdd 
...
ORDER by pc.id
于 2012-06-13T17:02:49.133 に答える
0

変化する:

SELECT * 
FROM pc 
ORDER by id

のようなものに

SELECT * 
FROM PC 
LEFT JOIN RAM on PC.Ram_ID = Ram.ID
LEFT JOIN GPU on PC.GPUID = GPU.ID
...
ORDER BY PC.ID

結合の理解を深めるには、http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.htmlを参照してください。

于 2012-06-13T16:59:01.370 に答える