2017-08-08 16 views
0

2つの列に同じ値を持つ行のデータをフェッチ: このコード:私はこれを試してみました

$sql="SELECT DISTINCT t_no,cust_name 
FROM menu_order 
WHERE b_id IN (
    SELECT b_id,m_name 
    FROM menu_order 
    GROUP BY b_id 
    HAVING COUNT(*) > 1 
)"; 


$result = mysql_query($sql); 
$row = mysql_fetch_array($result); 

    echo $row['t_no']; 
    echo $row['cust_name']; 
while ($row = mysql_fetch_assoc($result, MYSQL_ASSOC)) { 

    $name = $row['m_name']; 
    $n = explode(',', $name); 
    foreach ($n as $d) { 
     if ($d !== '') { // because before first comma or after last can be empty 
      echo $d.",".PHP_EOL; 

     } 

    } 

} 

いずれかがPHPで共通してt_no(table number)でデータをフェッチする方法を伝えることができますしてください。 ここでは、b_id(booking_id) is foreign keyです。

予想される出力がである:ここでは

1 |T03 | 2017-08-07 | Dal Fry,Sahi Paneer,Aloo Paratha | 2,1,1 

はデータベースです:

enter image description here

+0

これまでに試したことは何ですか? –

+0

質問に追加 –

+0

このクエリを試してください。 '' DISTINCT t_no、cust_name、b_id、m_name FROM menu_order WHERE b_id> = 1 ' –

答えて

0

あなたは例えば、GROUP_CONCATGROUP BYを使用することができます。:

SELECT b_id, t_no, date, GROUP_CONCAT(m_name), GROUP_CONCAT(quantity) 
FROM table 
GROUP BY b_id, t_no, date; 

Here'sGROUP_CONCAT()のMySQLのドキュメント。

+0

mysql_fetch_assoc()は、パラメータ1がリソース< - これを出力として取得していることを期待しています。 –

+0

@PriyaNageあなたはMySQLの管理者でこのクエリを試すことができますか? –

+0

ありがとう.. :)今、その作業.. –

0

質問には問題があると思われます。サブクエリは名前を含む2つの列を返しますが、b_id IN()にはb_idだけが必要です。サブクエリからm_nameを削除します。

関連する問題