2012-04-15 11 views
0

私は以下の質問をしており、最初の試合だけをリストしたいと思います。DISTINCTを使用して重複をフィルタリングしますか?

$first = $_GET['category']; 
$first = $first[0] . "%"; 

$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error()); 

(?カテゴリ= B)

この権利を行うことができますので、DISTINCT?これは私が試みたが、うまくいかなかったものです:

$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error()); 

EDIT:

function getCategory() { 
$first = $_GET['category']; 
$first = $first[0] . "%"; 

$query = mysql_query("SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%'") or die(mysql_error()); 
//$query = mysql_query("SELECT * FROM lyrics WHERE authorclean LIKE '".$first."'") or die(mysql_error()); 
if(mysql_num_rows($query) == 0) { 
    echo "Geen resultaten gevonden."; 
} else { 
while ($row = mysql_fetch_assoc($query)) { ?> 
    <p><a href="/<?= $_GET['category']; ?>/<?= strtolower($row['authorclean']); ?>/"><?= $row['author']; ?></a></p> 
    <?php } 
    } 
} 

(B%は単なるテストのためである)

私が実行している場合:ここでは完全なコードですデータベースのこの次のクエリは、私は2つの結果を直接取得します。上記のコードを実行すると、空のページが表示されます(既にHTMLのものは除きます)。

SELECT DISTINCT authorclean FROM lyrics WHERE authorclean LIKE 'B%' 
+1

では動作しませんか間違いましたか?間違った結果を得ましたか?また、SQLインジェクションについてもお読みください。エスケープせずにSQLクエリで外部入力を直接使用しないでください。 – liquorvicar

+0

結果は返さず、空のページだけが返されます。エラーメッセージはありません。 – user1333327

+0

実際のクエリをダンプし、その結果を返すかどうかをdbに対して直接実行しましたか? – liquorvicar

答えて

0

あなたはフィールドを持つAAテーブル「tbl_lyrics」している場合:著者の歌詞の年を、次のように例えば満たされている:

author_A  lyrics_A  year_A 
author_A  lyrics_A1  year_A1 
author_A1  lyrics_A2  year_A 
author_B  lyrics_B1  year_B1 

あなたは

select distinct(author) from tbl_lyrics where author like '%author_A%' 

をすれば、あなたが得ようとしている。author_Aをand author_A1。一致する最初のものではありません。あなたが行うことができます一致する最初のものにしたい場合は

select author from (select distinct(author) as author from tbl_lyrics where author like '%author_A%') where rownum <2; 

これはauthor_Aにのみ返されます。

リミットは何を意味「動作しませんでした」のでしょうか?MySQLで使用されているが、Oracleデータベース

2

最初の一致のみを表示するには、LIMIT 1を使用する必要があります。

+0

このようにlimitを使用する場合は、ORDER BY句も必要です。 – nnichols

+0

@nnicholsこれはオペレータが望む順序に依存します。 – xdazz

+0

が合意しました。 ORDER BY句が必要であることをOPに認識させたい場合は、クエリが非決定的になります。 – nnichols

関連する問題