Связь таблиц

V1taliy

Новичок
Связь таблиц

Добраго дня всем!

у меня вопрос такого характера!

есть 3 таблицы
Добраго дня всем!

у меня вопрос такого характера!

есть 3 таблицы




вот их код;
Код:
CREATE TABLE `tovarbase` (
`id` int( 3 ) NOT NULL auto_increment  , `stret` varchar( 40 ) NOT NULL , `codfirm` int( 3 ) NOT NULL , `codname` int( 3 ) NOT NULL , `zakaz` varchar( 40 ) NOT NULL)
 codfirm первичный

CREATE TABLE `firm` (
`codfirm` int( 3 ) NOT NULL auto_increment  , `namefirm` varchar( 40 ) NOT NULL)
 codfirm первичный



CREATE TABLE `mater` (
`codmater` int( 3 ) NOT NULL auto_increment , `namemater` varchar( 40 ) NOT NULL)  codmane  первичный

как мне сделать так чтобы в я добавлял в оснавную таблица в поля firm и mater цифры а при выводе данных на экран вместо цифр были названия из таблиц справачников




вот сам php код для вывода таблицы на экран я так понимаю что надо как то прописать связку в Select но не могу понять как!
Код:
<?
$link = mysql_connect("localhost", "root", "")or die("Не могу подключиться" );
mysql_select_db('tovar', $link) or die ('Не могу выбрать БД');
$query = "SELECT * FROM tovarbase";
$res = mysql_query( $query );// посылаем запрос базе данных
echo '<table align="center" cellpadding="3" CELLSPACING="0" width="30%"   bgcolor="" border="3" bordercolor="#66CCCC">';
echo '<tr>';
echo '<td align="center" <FONT size="4" color="100088"><strong>Id';
echo '<td align="center" <FONT size="4" color="100088"><strong>Улица';
echo '<td align="center" <FONT size="4" color="100088"><strong>Фирма';
echo '<td align="center" <FONT size="4" color="100088"><strong>Материал';
echo '<td align="center" <FONT size="4" color="100088"><strong>заказчик';
echo '</tr>';
while($pole = mysql_fetch_array( $res ))
{
echo '<tr>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['id'].'</td>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['stret'].'</td>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['codfirm'].'</td>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['codmater'].'</td>';
echo '<td align="center" <FONT size="3" color="100088">'.$pole['zakaz'].'</td>';
echo '</tr>';
}
echo

помогите пожалуйста! заранее благодарен
 

Fortop

Новичок
[sql]
SELECT * FROM table1
JOIN table2 ON table1.field1 = table2.field1
JOIN table3 ON table1.field2 = table3.field2
[/sql]
 

V1taliy

Новичок
то есть мне надо делать

Код:
SELECT *
FROM tovarbase
JOIN firm ON tovarbase.codfirm =  firm.namefirm
JOIN mater ON tovarbase.codmater = mater.namemater
я правильно понял?


и если все так надо ли мне еще где то в коде что то изменять?
 

V1taliy

Новичок
попробовал не работает! ошибку не выдает но таблицу не ресует
 

Fortop

Новичок
Видимо ошибка в логике запроса?

И стоит пожалуй почитать мануал о том, как происходит JOIN таблиц?
В частности можно обратить внимание на название полей после ON
 

V1taliy

Новичок
так код рабочий когда с одной таблицей все норм! когда начинаю пытаться присоединить еще не получается! читал я по join там действительно описано как вы говорите что самый популярный способ после on ставить условия равенства но тут как видете не получаеться
 

Fortop

Новичок
Fortop
В частности можно обратить внимание на название полей после ON
В равенстве указываются поля по которым происходит связывание. Т.е. они должны содержать одинаковые признаки

Вы же сравниваете теплое с мягким.
 

V1taliy

Новичок
одинаковые признаки в моем случае это код фирмы(материала) он есть и в той и в той таблице

тогда я попробую
Код:
SELECT *
FROM tovarbase
JOIN firm ON tovarbase.codfirm =  firm.codfirm
JOIN mater ON tovarbase.codmater = mater.codmater
-~{}~ 09.04.10 15:44:

опять не то теперь уже выдал ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\qwe\index.php on line 24

-~{}~ 09.04.10 15:50:

все разобрался! все понял! огромное вам спасибо!!!!
 
Сверху