2016-10-06 11 views
2

私の質問は明確ではありませんので、少し編集しています。PDO fetchall query、複数の結果を表示しますが、IDごとに1つしかありません

私は人々が何かに入札できるウェブサイトを持っており、アカウントページで入札単価を追跡することができます。しかし、ある人がある商品に2度入札すると、その商品は2度見えます。だから、商品ごとに最高入札単価を表示したいだけです。

これが私のクエリです:

$objDatabaseAds->prepare('SELECT * FROM bieden WHERE ownerid = :ownerid ORDER BY prijs DESC'); 

挨拶、

ブラム

EDIT

$objGetHighest = $objDatabaseAds->prepare('SELECT * FROM bieden WHERE ownerid = :ownerid GROUP BY adid'); 
$objGetHighest->bindParam('ownerid', $member_id); 
$objGetHighest->execute(); 
$objGetHighestFetch = $objGetHighest->fetchAll(PDO::FETCH_ASSOC); 

foreach ($objGetHighestFetch as $key) { 
    $adID = $key['adid']; 
    //This echoes 3 values which is good!! 

    $objGetBid = $objDatabaseAds->prepare('SELECT * FROM bieden WHERE adid = :adid'); 
    $objGetBid->bindParam('adid', $adID); 
    $objGetBid->execute(); 
    $objGetBidFetch = $objGetBid->fetchAll(PDO::FETCH_ASSOC); 
} 

だからこれは私が今得たものです。 $ adIDは、4つの広告のうち3つの値をエコーし​​ます.2つの広告のIDが同じであるため、2つの広告のIDは同じです。しかし、私は別のクエリを実行し、その後私は彼が一度表示IDの入札を参照してください。

Table

+0

使用GROUP BY product_ID – angvee

+0

返信いただきありがとうございます。これを私のクエリで使用すると、3の代わりに2つの結果が得られます。これは正しい構文ですか? 'SELECT * FROM bieden where ownerid =:ownerid GROUP BY adid =:adid ORDER BY prijs DESC' –

+0

owneridのすべてを特定の値で選択しますか? – angvee

答えて

2

これを試してください。 GROUP BY adidを追加するだけで、好きなように動作します。乾杯!お役に立てば幸いです。

$objGetHighest = $conn->prepare("SELECT * FROM tabs WHERE ownerid = :ownerid GROUP BY adid"); 
$objGetHighest->bindParam('ownerid', $member_id); 
$objGetHighest->execute(); 
$objGetHighestFetch = $objGetHighest->fetchAll(PDO::FETCH_ASSOC); 

foreach ($objGetHighestFetch as $key) { 
    $adID = $key['adid']; 
    //This echoes 3 values which is good!! 
    //echo $adID."<br />"; 

    $objGetBid = $conn->prepare("SELECT * FROM tabs WHERE adid = '$adID' GROUP BY adid "); 
    $objGetBid->execute(); 
    $objGetBidFetch = $objGetBid->fetchAll(PDO::FETCH_ASSOC); 
    print_r($objGetBidFetch); 
} 
2

1つの上位行を取得したい場合は、希望がお手伝いします、これを試すことができます。乾杯!

$query = $objDatabaseAds->prepare('SELECT * FROM bieden WHERE ownerid = :ownerid ORDER BY prijs DESC LIMIT 1'); 

$query->execute(); 

while($data = $query->fetch(PDO::FETCH_ASSOC)){ 
    echo $data['column_name']; 
    echo $data['ownerid']; 
} 
+0

私は行を表示するためにforeachループを使用しています。 –

+0

あなたの以前の質問に申し訳ありません。だから、あなたのテーブルから1つ上の行だけを取得するだけですか?それが正しい場合は、クエリLIMIT 1を追加してください。 – angvee

関連する問題