0

私は他のいくつかの答えを試しましたが、まだこれを回避することはできません。私の特定の問題が解決されれば、3 つのテーブルを結合する方法を理解できるかもしれません。

私はこれらのテーブルを持っています:

invoice
id - 

invoiceItem
id - invId - itemId - discode

item
id - name - cid(categoryID) - price - memprice - attendee_price

category
id - catName

請求書を照会して ID を取得し、while ループを実行して、請求書アイテムのリスト、ID によるそれらのアイテムの詳細、および ID によるカテゴリを取得します。

これは私が試みているクエリですが、結合とwhere句でハングアップしています

while ($r = mysql_fetch_assoc($invoice_query){      
//my invoice id is $r['id']

    $iQ = mysql_query("SELECT 
          item.id, item.cid, item.name, item.memprice, item.attendee_price, item.price,
          invoiceItem.discode, 
          categories.id, categories.catName
          FROM invoiceItem 
          INNER JOIN categories ON item.cid=categories.id 
          INNER JOIN item ON ?????? 
          WHERE invoiceItem.id='$r[id]'");
}
4

1 に答える 1

2

ON 条件はINNER JOINS通常次のもので構成さ leftTable.foreignKey = rightTable.primaryKeyれます...あなたのケースでは、請求書テーブルの結合を追加する必要があったため、その主キーをinvoiceItemテーブルの外部キーと一致させました(invoice.id = invoiceItem.invId)

SELECT 
          item.id, item.cid, item.name, item.memprice, item.attendee_price, item.price,
          invoiceItem.discode, 
          categories.id, categories.catName
          FROM invoiceItem 
          INNER JOIN item ON item.id = invoiceItem.itemId 
          INNER JOIN categories ON item.cid=categories.id 
          INNER JOIN invoice ON invoice.id = invoiceItem.invId
          WHERE invoice.id='$ir[id]'
于 2013-07-12T21:46:20.027 に答える