Выборка данных из нескольких таблиц

SparcoCF

Новичок
Выборка данных из нескольких таблиц

Всем привет, есть у меня три таблицы в базе MySQL ихняя структура следующая:
Таблица GA_MODELS:
ID_MODEL|MARKA|MODEL
gy27|BMW|E34

Таблица GA_KAT:
KAT_NUMBER|ID_MODEL|NOMER_OE|PHOTO
BW 206|gy027|3213 1 127 793|BW202.JPG
BW 006|gy027|64356 56 8893|BW006.JPG

Таблица GA_PRICE:
KAT_NUMBER|INFO|PRICE
BW 006|Насос Г/У BMW E34 литое крепление|135

Из этих трех таблиц мне нужно сделать сводную такого типа:
KAT_NUMBER|NOMER_OE|PHOTO|INFO|PRICE

значит делаю я следующий запрос:

PHP:
$query = "SELECT * FROM GA_MODELS, GA_KAT, GA_PRICE WHERE MARKA='BMW' AND MODEL='E34' AND GA_MODELS.ID_MODEL=GA_KAT.ID_MODEL AND GA_PRICE.KAT_NUMBER=GA_KAT.KAT_NUMBER";

$result = mysql_query($query);
	
	echo "<table border=1>";
	while ($row = mysql_fetch_array($result)) {
		echo "<tr>";
                echo "<td>-".$row['KAT_NUMBER']."</td>";
                echo "<td>-".$row['NOMER_OE']."</td>";
		echo "<td>-".$row['PHOTO']."</td>";
		
		echo "<td>-".$row['INFO']."</td>";

		echo "<td->".$row['PRICE']."</td>";
		echo "</tr>";
	}
	echo "<table>";
Следовательно в результате я получаю такие данные:
BW 006|64356 56 8893|BW006.JPG|Насос Г/У BMW E34 литое крепление|135

Нужно что бы я получил такие данные:
BW 006|64356 56 8893|BW006.JPG|Насос Г/У BMW E34 литое крепление|135
BW 206|3213 1 127 793|BW206.JPG|ПУСТО|ПУСТО

Но поскольку в запросе я использую
AND GA_PRICE.KAT_NUMBER=GA_KAT.KAT_NUMBER

выводятся только те данные которые находят соответствующий номер в таблице GA_PRICE

Подскажите пожалуйста как должен выглядеть запрос что бы можно было выводить данные из таблицы независимо от того нашелся в таблице GA_PRICE соотвествующий номер или нет собственно что бы результат был таким:
BW 006|64356 56 8893|BW006.JPG|Насос Г/У BMW E34 литое крепление|135
BW 206|3213 1 127 793|BW206.JPG|ПУСТО|ПУСТО
 

SparcoCF

Новичок
dimagolov
Очень благодарный вам за ответ но разжуйте мне чуть больше :)
куда именно в запросе прилепить LEFT JOIN ?
 

dimagolov

Новичок
посмотри:
1. в ссылку, что я дал, хотя у ТС-а там ужос, но представление получите
2. ман по синтаксису mysql JOIN
если и после этого что-то неясно, задавай конкретный вопрос про то, что не ясно.
 

SparcoCF

Новичок
Сделал запрос следующим:
$query = "SELECT * FROM GA_MODELS, GA_KAT LEFT JOIN GA_PRICE ON (GA_KAT.KAT_NUMBER=GA_PRICE.KAT_NUMBER) WHERE MARKA='$marka' AND MODEL='$model' AND GA_MODELS.ID_MODEL=GA_KAT.ID_MODEL";

И выводит данные вперемешку
Где моя ошибка ?
 

dimagolov

Новичок
[sql]SELECT * FROM GA_MODELS
INNER JOIN GA_KAT ON GA_MODELS.ID_MODEL=GA_KAT.ID_MODEL
LEFT JOIN GA_PRICE ON GA_KAT.KAT_NUMBER=GA_PRICE.KAT_NUMBER
WHERE MARKA='$marka' AND MODEL='$model'[/sql]
что значит "вперемешку"? выведет все поля из GA_MODELS,GA_KAT и GA_PRICE

-~{}~ 16.02.10 15:28:

кстати, в *nix в отличии от win идентификаторы в MySQL Case Sensitive.
 
Сверху