したいこと
在庫テーブル(stock)に同じ商品番号(val_number)がある場合、
どうすれば最も大きなidに対するstock_numberが取得できるのでしょうか?
- 商品の在庫テーブル:stockに、商品の色やサイズを格納したテーブル:valを結合。
- 商品を販売するごとに在庫テーブル(stock)へ在庫数を保存。
- foreachのループ処理をして、商品の色やサイズ毎の在庫数を
在庫テーブル(stock)の最も大きなidでソートして表示したい。
※下記のWordPressの表示画面は商品の詳細ページです。
在庫テーブルにもあるitem_numberを$_GET['item_number']で取得し、
WHEREの条件分岐に使用しています。
###現状について
在庫テーブル(stock)で同一val_numberがある場合、
idが最も大きい場合のstock_numberを表示させたいのです。
ですが、WHEREにMAX(id)を設定しても最初のidに対するstock_numberしか取得できていません。
WordPressの表示画面です????
在庫テーブル:stockのデータです????
商品の色やサイズ情報のテーブル:valのデータです????
PHP
1$itemNumber = $_GET['item_number']; 2$stock_sql = 3 "SELECT 4 st.id AS ids, 5 st.item_number AS numbers, 6 st.stock_number AS stocks, 7 v.val_number AS stock_valnumber, 8 v.val_color AS stock_color, 9 v.val_size AS stock_size 10 FROM stock st 11 INNER JOIN val v 12 ON st.val_number = v.val_number 13 WHERE st.item_number=$itemNumber 14 GROUP BY st.val_number 15 "; 16$stock_query = $wpdb->prepare($stock_sql, 1, "PHP"); 17$stock_Datas = $wpdb->get_results($stock_query); 18echo '<table>'; 19echo '<form action="/sales/salesdetail/check?item_number='.$itemNumber.'" method="POST" enctype="multipart/form-data">'; 20echo '<tr>'; 21echo '<th>色/サイズ</th><th>在庫</th><th>商品の選択</th>'; 22echo '</tr>'; 23foreach($stock_Datas as $stock_Data){ 24 echo '<tr>'; 25 echo '<td>'.$stock_Data->stock_color.'/'.$stock_Data->stock_size.'</td>'; 26 if($stock_Data->stocks > 0){ 27 echo '<td>'.$stock_Data->stocks.'</td>'; 28 echo '<td><input type="radio" name="val_number" id="val_number" 29 value="'.$stock_Data->stock_valnumber.'"></td>'; 30 echo '<input type="hidden" name="item_number" value="'.$stock_Data->numbers.'">'; 31 echo '<input type="hidden" name="val_color" value="'.$stock_Data->stock_color.'">'; 32 echo '<input type="hidden" name="val_size" value="'.$stock_Data->stock_size.'">'; 33 } else { 34 echo '<td>×</td>'; 35 echo '<td>×</td>'; 36 } 37echo '</tr>'; 38echo '</table>'; 39echo '<button class="next-btn" type="submit">確認する</button>'; 40echo '</form>'; 41}
###試したこと
PHP
1WHERE 2 st.id = 3 (SELECT MAX(st.id) 4 FROM stock 5 WHERE st.item_number=$itemNumber) 6GROUP BY st.val_number
どのようにすれば在庫テーブル(stock)で同一val_numberがある場合に
最も大きなidに対するstock_numberが取得できるのでしょうか?
※「達人に学ぶSQL徹底指南書」や「SQLアンチパターン」を読みながら模索していますが、
実装できていません。
教えて頂けると幸いです。
###使用環境
- Local by Flywheel
- MySQL
- WordPress
- VS Code
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。