0

大家好,我正在通过在线教程学习如何编码(php 和 mysql),并且正在从头开始构建我的第一个网站。

我被一个问题难住了,我不知道在谷歌中获得结果的最佳搜索关键字。我希望有人能帮帮忙。

我熟悉

SELECT ... FROM ... JOIN ... ON ... 

并且在处理直接相关的表时效果非常好,但是当一个表是......“遥远相关”(我不知道如何表达这个)时,我在 mysql 中得到一个错误。

请看下图。 http://i.stack.imgur.com/mfNXT.png 我有 5 张桌子。

我想使用类似于的代码输出一个 html 表

"SELECT horseRaces.ID, horseRaces.stall, horseRaces.draw, horses.name, horses.birth, horseRaces.win, horseRaces.place, horseStatus.name
FROM horseRaces
JOIN horses ON horseRaces.horseID = horses.ID
JOIN horseStatus ON horseRaces.horseStatusID = horseStatus.ID
ORDER BY stall"

希望有人可以帮助我,因为我很难过。我所有的谷歌搜索都会带来内连接和外连接结果。

4

3 回答 3

0

Try this:

SELECT hr.ID, h.name, c.name, cg.name, j.name FROM horseRace hr 
LEFT JOIN horses h ON h.ID = hr.horseID 
LEFT JOIN country c ON h.countryID = c.ID 
LEFT JOIN horseGender hg ON hg.ID = h.genderID 
LEFT JOIN  jockey j ON hr.jockeyID = j.ID 
order by h.ID
于 2013-11-07T12:05:19.790 回答
0

坚持你的写作风格:

SELECT 
    horseRaces.ID
    ,horse.Name
    ,country.Name
    ,horseGender.Name
    ,jockey.Name
FROM horseRaces
JOIN horses ON horseRaces.HorseID = horses.ID
JOIN jockey ON horseRaces.JockeyID = jockey.ID
JOIN country ON horses.CountryID = country.ID
JOIN horseGender ON horses.GenderID = horseGender.ID
ORDER BY horseRace.ID, horse.ID

应该产生你正在寻找的表。

我建议为每个表指定别名,这样您就不必每次都写出表名,在这种情况下,如果 horseID、jockeyId、countryID 和 genderID 不能为空,则相应的连接应该是 INNER(不要不过太担心了)

SELECT 
    hr.ID
    ,h.Name AS HorseName
    ,c.Name AS Country
    ,hg.Name AS HorseGender
    ,j.Name AS JockeyName
FROM horseRaces hr
INNER JOIN horses h ON hr.HorseID = h.ID
INNER JOIN jockey j ON hr.JockeyID = j.ID
INNER JOIN country c ON h.CountryID = c.ID
INNER JOIN horseGender hg ON h.GenderID = hg.ID
ORDER BY hr.ID, h.ID
于 2013-11-07T12:01:27.773 回答
0

try this:

$sql="Select 
    hr.ID as ID,
    h.name as HNAME,
    c.name as COUNTRY,
    hg.name as HGENDER,
    j.name as JOKEY
from horseRase hr
left join hourses h
on hr.horseID = h.ID
left join country c
on h.countryID = c.ID
left join hourseGender hg
on h.genderID = hg.ID
left join jokey j
on hr.JokeyID=j.ID

ORDER BY hr.ID
";
$result = mysql_query($sql) or die();

echo "<table>
    <tr>
        <td>ID</td>
        <td>HORSE NAME</td>
        <td>COUNTRY</td>
        <td>GENDER</td>
        <td>JOKEY</td>
    </tr>
";

while($row = mysql_fetch_array($result)){
$ID=$row['ID']; 
$HORSE=$row['HNAME']; 
$COUNTRY=$row['COUNTRY']; 
$HGENDER=$row['HGENDER']; 
$JOKEY=$row['JOKEY']; 

echo "
    <tr>
        <td>$ID</td>
        <td>$HORSE</td>
        <td>$COUNTRY</td>
        <td>$HGENDER</td>
        <td>$JOKEY</td>
    </tr>
";

}
echo "</table>"
于 2013-11-07T12:37:55.967 回答