Добрый день, уважаемые господа!)
Есть проблема, над которой уже бьюсь несколько дней - решил зарегистрироваться, что бы профессионалы объяснили мне, как же все-таки правильно решить данную задачу. К сожалению поиск по интернету ничего не дал, так как подозреваю, что я искал неверное значение.
Итак, в базе есть две таблицы: одна таблица общих цен (table1), и таблица индивидуального прайса (table2).
Структура таблиц одинаковая и очень простая:
table1
tovar_id all_price
table2
tovar_id individual_price
Задача:
Сделать вывод, где отображаются все элементы товаров с первой таблицы, но(!) — если в table2 встречается tovar_id с таким же как и в table1, то в выводе указывается это значение.
Перепробовал и while, и for, читал про вложенные циклы - но что-то ничего толком не выходит, уже сил нет.
PHP |
<?php
include("db.connect.php");
$price_q = mysql_query("SELECT * FROM table1 order by tovar_id ASC"); $individual_price = mysql_query("SELECT * FROM table2 order by tovar_id");
?> <br />
<h3>Цены</h3>
<table width="100%" border="0" align="center"> <tr> <td>Общая цена</td> <td>Моя цена</td> </tr> <?
while($data = mysql_fetch_array($price_q)) { while($data2 = mysql_fetch_array($individual_price)) {
if($data['tovar_id'] == $data2['tovar_id']) { $ind_price = $data2['ind_price'] } ?> <tr> <td><? print $data['all_price']; ?></td> <td><? print $data2['ind_price']; ?></td> </tr> <? } } |
Проблема в том, что товаров может быть 100, а индивидуальная цены всего две например - не знаю как добиться, что бы выводились все товары, но только если совпадают tovar_id появлялась надпись с индивидуальной ценой.
Пробовал значения в $data2 загонять в массив, а потом через in_array производить сопоставление - но ничего не выходило.
Очень прошу, подскажите как такое возможно реализовать - чувствую, что как-то очень просто, но - увы, не знаю.
Спустя 1 час, 37 минут, 23 секунды (6.10.2009 - 10:43) jetistyum написал(а):
SQL |
SELECT table1.*, table2.individual_price
FROM table1 LEFT JOIN table2 ON table2.tovar_id = table1.tovar_id
order by tovar_id ASC |
вот как-то так. Ты получишь на выходе массив с тремя ключами
tovar_id, price, individual_price
потом при отображении проверяешь если individual_price!=false , то выводишь individual, else - price
Спустя 1 минута, 14 секунд (6.10.2009 - 10:44) zee написал(а):
хм... спасибо, буду пробовать - отпишусь (неужели настолько просто?)
Спустя 23 минуты, 22 секунды (6.10.2009 - 11:07) jetistyum написал(а):
не, ну можно и посложнее

но вроде незачем