2

ゲーム「EVEOnline」のアイテムのデータベースを自分や友達が使えるようにしようと思っており、SQLサーバーをセットアップしてテーブルなどを作成してもらい、順調に進んでいます。ただし、2つの異なるテーブルからデータをインポートし、同じhtmlテーブル要素内でそれらを相互に比較しようとすると、1つの問題が発生します。複数の列を持つ1つのテーブルからインポートするだけで完全に機能しますが、複数のソースを選択しようとすると問題が発生します。

私が引っ張っているテーブルは...

testmetrics.eve_inv_types および testmetrics.items_selling

理想的には、テーブル#1から "name"、 "type_id"、 "jita_price_sell"列をインポートし、テーブル#2から "price"、 "type_id"、 "station_id"、および"qty_avail"をインポートしたいと思います。

また、jita_price_sellとpriceでROUND演算子を使用して、さまざまなアイテムの価格ポイントの小数点以下2桁の概算を取得しています。また、表2では、正しいstation_idの結果のみが表示されるようにしています。しかし、それはエラーを投げ続けます!

これがこれまでの私のコードです...

<?php
$con = mysql_connect("testmetrics.db.10198246.xxxx.com","xxxx","xxxx");
if (!$con) 
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("testmetrics", $con);
$result = mysql_query("
SELECT testmetrics.eve_inv_types.name, testmetrics.eve_inv_types.type_id, ROUND(testmetrics.eve_inv_types.jita_price_sell, 2) as jita_price_sell, ROUND(testmetrics.items_selling.price, 2) as price, testmetrics.items_selling.qty_avail, testmetrics.items_selling.sation_id, testmetrics.items_selling.type_id 
FROM testmetrics.eve_inv_types, testmetrics.items_selling
WHERE testmetrics.eve_inv_types.type_id = testmetrics.items_selling.type_id, testmetrics.items_selling.station_id = '61000746'");
echo "<table class='sortable'>
<tr>
<th>Item Name</th>
<th>Price (Jita)</th>
<th>Price (K-6K16)</th>
<th>Qty Avail (K-6K16)</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['testmetrics.eve_inv_types.name'] . "</td>";
echo "<td>" . $row['jita_price_sell'] . "</td>";
echo "<td>" . $row['price'] . "</td>";
echo "<td>" . $row['testmetrics.items_selling.qty_avail'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>

あなたが与えることができるどんな助けまたは洞察も大いにありがたいです。testmetrics.eve_inv_types.jita_price_sell + (testmetrics.eve_inv_types.volume * 300)また、送料を取得して、それを独自の列にエクスポートするような数学関数を実行できるようにしたいと思います。

あなたが言わなければならないことは大歓迎です!

編集:私はすでにここでたくさんの助けを求めていることを知っていますが、それがソートされている列に応じてリターンを「トップ100」に制限する方法を知っている人はいますか?簡単に並べ替えられるように、Javascriptアドオンを使用しています。

これは私のためにそれを解決したコードです!

SELECT eve_inv_types.name, 
       eve_inv_types.type_id, 
       Round(eve_inv_types.jita_price_sell, 2) AS jita_price_sell, 
       Round(items_selling.price, 2)           AS price, 
       items_selling.qty_avail,  
       items_selling.type_id 
FROM   eve_inv_types 
       JOIN items_selling
         ON eve_inv_types.type_id = items_selling.type_id 
            AND items_selling.station_id = '61000746' 
4

2 に答える 2

0
SELECT eit.name, 
       eit.type_id, 
       Round(eit.jita_price_sell, 2) AS jita_price_sell, 
       Round(eis.price, 2)           AS price, 
       eis.qty_avail, 
       eis.sation_id, 
       eis.type_id 
FROM   eve_inv_types eit 
       JOIN `items_selling` eis 
         ON eit.type_id = eis.type_id 
            AND eis.station_id = '61000746' 
于 2013-02-05T00:43:07.507 に答える
0

テーブルを結合できます(テーブルを接続するキーがあると仮定します)。例を次に示します。

table A:
    personId
    firstName
    lastName
    numOfChildren

table B:
    personId
    streetName
    cityName
    countryName

両方から選択します(personIDを結合キーとして使用):

SELECT firstName, lastName, numOfChildren, streetName, cityName, countryName
FROM tableA JOIN tableB USING (personId)

結果を制限したい場合は、以下を追加できます。

LIMIT 100

また、上位100人の親が必要な場合は、次の方法で注文できますnumOfChildren

ORDER BY numOfChildren

最終クエリは次のようになります。

SELECT firstName, lastName, numOfChildren, streetName, cityName, countryName
FROM tableA JOIN tableB USING (personId)
ORDER BY numOfChildren
LIMIT 100;

- また -

SELECT firstName, lastName, numOfChildren, streetName, cityName, countryName
FROM tableA JOIN tableB ON (tableA.personId=tableB.personId)
ORDER BY numOfChildren
LIMIT 100;

参加の詳細については、http://dev.mysql.com/doc/refman/5.1/en/join.htmlをご覧ください。

于 2013-02-05T00:46:13.590 に答える