|
|
|
| Есть две переменные которые учавствуют в запросе, в результате запроса получается массив который должен учавствовать в другом запросе. как это реализовать?
напрмер:
<?
$a=1
$b=2
$sql="SELECT * FROM tab WHERE dev_type='$a'";
$result=mysql_query($sql);
$c=mysql_fetch_array($result); //первый массив
$sql="SELECT * FROM tab WHERE dev_type='$b";
$result=mysql_query($sql);
$d=mysql_fetch_array($result); //второй массив
//а дальше что-то типо
$sql="SELECT * FROM product, cab_type WHERE product.product_id=cab_type.cab_id AND ((cab_type.f_side='$c' AND cab_type.s_side='$d') OR (cab_type.f_side='$d' AND cab_type.s_side='$c'));";
?>
|
или как? | |
|
|
|
|
|
|
|
для: BArt Simpson
(25.11.2005 в 10:30)
| | или может вообще по другому?
|| cab_con_type || cab_dev_con || cab_dev_type || cab_type ||
===========================================================================================
||con_id | con_name || dev_id | dev_con || dev_id | dev_name || cab_id | f_side | s_side ||
===========================================================================================
|| 12 | RGB || 1 | 12 || 1 | TV || 540 | 12 | 13 ||
|| 13 | Scart || 1 | 13 || 2 | DVD || 541 | 13 | 13 ||
|| | || 2 | 13 || | || | | ||
|
входят две переменные $a и $b, они являются оборудованием, т.е. TV и DVD из таблици cab_dev_type
в таблице cab_dev_con описываются возможные разёмы на этом оборудование ( cab_dev_con.dev_con=cab_con_type.con_id )
а в cab_type описываюстся кабели, где cab_id=id кабеля в каталоге, а f_side и s_side разъёмы.
и на выходе варианты, должны быть, cab_id. второй день не могу придумать ничего дельного. помогите! | |
|
|
|
|
|
|
|
для: BArt Simpson
(25.11.2005 в 12:35)
| | >и на выходе варианты, должны быть, cab_id.
Что-то не очень понятно... какая информация доступна до формирования запроса и какую информацию он должен предоставлять? | |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 13:31)
| | Для запроса доступно "TV" и "DVD" точнее их id (cab_dev_type.dev_id) получить надо cab_id (варианты подключения) | |
|
|
|
|
|
|
|
для: BArt Simpson
(25.11.2005 в 15:19)
| | А нельзя в cab_type добавить ключ dev_id? Т.е. чуть-чуть денормализовать всё, а то получается, что необходимо через 4 таблицы путешествовать... | |
|
|
|
|
|
|
|
для: cheops
(25.11.2005 в 18:16)
| | нет, там ключом является cab_id (те ID кабеля), а остольные поля id коннекторов по которым кабель и находится | |
|
|
|
|
|
|
|
для: BArt Simpson
(28.11.2005 в 09:57)
| | В принципе менипуляции только с двумя таблицами, cab_dev_con и cab_type. остальные для вывода форм.
I. получаем две переменные (обе относятся к cab_dev_con.dev_id)
II. выбираем из cab_dev_con возможные коннекторы
III. смотрим в cab_type возможные кабели с этими коннекторами.
те к первому девайсу относятся коннекторы 12 и 13, ко второму 13 и в cab_type смотрим чот бы на одной стороне было 12 или 13 и на другой 13. | |
|
|
|
|
|
|
|
для: BArt Simpson
(28.11.2005 в 11:19)
| | пробую
<?
if($fdev&&$sdev)
{
$sql="SELECT * FROM cab_type, cab_dev_con WHERE(((cab_dev_con.dev_id_='$fdev' AND cab_type.f_side='cab_dev_con.dev_con') AND (cab_dev_con.dev_id_='$sdev' AND cab_type.s_side='cab_dev_con.dev_con')) OR ((cab_dev_con.dev_id_='$sdev' AND cab_type.f_side='cab_dev_con.dev_con') AND (cab_dev_con.dev_id_='$fdev' AND cab_type.s_side='cab_dev_con.dev_con')))";
$result=mysql_query($sql);
if($result)
{
$num_rows = mysql_num_rows($result);
while($myrow=mysql_fetch_array($result))
{
echo $myrow["cab_id"]."<br> - ";
}
echo"найдено ".$num_rows."<br>";
echo"<a href=\"./?go=cab\">вернуться к подбору</a>";
}
else{echo"error query ".mysql_error();}
}?>
|
но пофигу, не работает
$num_rows = mysql_num_rows($result)
пишет ноль записей | |
|
|
|
|
|
|
|
для: BArt Simpson
(28.11.2005 в 14:24)
| | Такое ощущение что просто игнорируют, пишу тут сам себе :-)
ну да ладно,всё почти получилось,
<?
$sql="SELECT * FROM cab_type, cab_dev_con, eccatalog_product WHERE (cab_dev_con.dev_id_='$fdev' AND cab_type.f_side=cab_dev_con.dev_con) AND (cab_dev_con.dev_id_='$sdev' AND cab_type.s_side=cab_dev_con.dev_con) AND catalog_product.product_id=cab_type.cab_id;";
?>
|
но вот неудача.... две переменные, с различными значениями, и оба значения должны быть выбранны из поля cab_dev_con, но так как в запросе уже написано что cab_dev_con.dev_id_='$fdev' , то cab_dev_con.dev_id_='$sdev' видно уже не хочет учитываться, вот если $fdev=$sdev, то что-то выводится (типо кабели с одинаковыми коннекторами на обоих концах). А как сделать такой же запрос, только чтоб он работал, даже, в том случае, если $fdev=!$sdev? | |
|
|
|
|
|
|
|
для: BArt Simpson
(28.11.2005 в 16:30)
| | >Такое ощущение что просто игнорируют, пишу тут сам себе :-)
>ну да ладно,всё почти получилось,
Нет просто очень сложно отвечать на такие вопросы без исходных таблиц - вы то можете экспериментировать, а на приходится проблему усилием мысли пробивать... | |
|
|
|
|
|
|
|
для: cheops
(28.11.2005 в 20:02)
| | из таблици берётся только cab_dev_con.dev_id_='$fdev', а cab_dev_con.dev_id_='$sdev' видно уже не учитывается, или наоборот | |
|
|
|