2016-04-26 13 views
1

これはどのように動作しますか?私も "とtb1.name!="を使用してみましたが、それは動作しませんでした。値に一致する行のみを別のテーブルに表示する方法

$area = 0; 
$stmt = $dbh->prepare('SELECT * FROM charinfo WHERE current_area != :area ORDER BY current_area'); 
$stmt->execute(array('area' => $area)); 
$result = $stmt->fetchAll(); 
$place = 1; 

私はゲームサーバーを実行し、私は(ここでは別のトピックから直接コードを発見した)の驚異を働いているトップ30のリーダーボードを持っているウェブサイト上で、私がいる問題は使用することができませんさADMINの文字がリストされないようにするために、誰もが提案しているJOIN関数。

ここに私のウェブサイトにあるコードは、ランク番号1-30、文字の名前とレベルをテーブルに示しています。 Here's it working on my website

<?php 
require("srvcs/config.php"); 
$stmt = $dbh->prepare('SELECT * FROM chars ORDER BY CAST(experience AS UNSIGNED) DESC LIMIT 30;'); 
$stmt->execute(); 
$result = $stmt->fetchAll(); 
$place = 1; 

echo '<table class="justShowme" style="width:600px;height:150px;"> 

         <tr> 
          <td>Rank</td> 
          <td>Character Name</td> 
          <td>Level</td> 
          </tr>'; 

    foreach ($result as $index => &$item) { 

     $exp = floor(pow($item['experience'] + 1, 1/4)); 
     $name = $item['name']; 

     echo '<tr>'; 
     echo "<td><B>" . $place++ . "</B></td>"; 
     echo "<td>" . $name . "</td>"; 
     echo "<td>" . $exp . "</td>"; 
     echo '</tr>'; 
    } 
    echo '</table></center>'; 
?> 

私は、MySQLに精通していないので、私はちょうど私が必要と知っているものをリストアップすることから始めましょう...

  1. 「は文字」テーブルは、文字情報が含まれて

    'sID' column is unique and matches the subscriber 'ID' column, whoever owns the character 
    
  2. 「加入者のテーブルには、アカウント情報と管理ステータス

    を含み3210
    'ID' is the subscriber ID which the 'sID' from chars table refers to 
    'admin' is the admin status of the account as Y or N 
    

文字に、管理者IDの値がYのサブスクライバIDの文字がある場合は、その文字をリストにしないでください。

管理者の値がNのサブスクライバIDのsID値を持つキャラクタの場合、それはリストに表示され、テーブルはDESCとしてリストされ、30行の結果しか表示されません。

どうすればいいですか?

ご協力いただければ幸いです!これは私の最初の投稿ですので、将来のヘルプリクエストのヒントも素敵です:)事前にありがとう!

答えて

1
SELECT tb1.* 
    FROM chars tb1 
    JOIN subscriber tb2 
    ON tb1.sID=tb2.ID 
    WHERE admin = 'N' 
    ORDER BY CAST(experience AS UNSIGNED) DESC 
    LIMIT 30; 
+1

ありがとう、これは私が提案していたものでしたが、複製して作業を行う方法がわかりませんでした。人生節約! –

0

NOT INサブクエリを使用できます。

以下を参照してください。

SELECT chars.* 
FROM chars 
WHERE sID NOT IN (SELECT ID FROM subscriber WHERE subscriber.admin = 'Y') 
ORDER BY CAST(experience AS UNSIGNED) DESC 
LIMIT 30; 
+0

これもうまくいきました、ありがとう! –

関連する問題