|
|
|
| как правильно сделать выборку и вывод данных
есть тадица 1
id_cat name_cat
и таблица 2
id_ent name_ent id_cat
как правильно сделать выборку и таблицы 2, чтоб при соответствии id_cat выводилось содержимое name_cat | |
|
|
|
|
|
|
|
для: Bvz
(19.06.2009 в 10:33)
| | Своими словами:
<?php
$query = "SELECT (здесь через запятую пишете все поля которые должны быть в результате запроса: табл1.поле2, табл2.поле3 и т.д.)
FROM (название первой таблицы, для всех строк которой нужно найти соответствие во второй таблице)
LEFT JOIN (название второй таблицы)
ON (условие по которому определяется соответствие, у вас: 'таблица2.id_cat = таблица1.id_cat' ) ";
?>
|
Если вам нужно перебрать не все строки первой таблицы добавьте в конце запроса WHERE или LIMIT...
Можете использовать синонимы имен таблиц и полей с помощью AS
Строк LEFT JOIN ... ON ... в запросе может быть столько, сколько полей из других таблиц необходимо привести в соответствие первой "главной" таблице. В вашем случае одного левого соединения хватит. | |
|
|
|
|
|
|
|
для: buldovsky
(19.06.2009 в 11:12)
| | все здорово, разобрался как работает, но есть нюан, в обоих таблицах есть поле с одинаковым названием и выводится только из 2-й таблицы, а как сделать что оба выводились, вот код
$ad = mysql_query("SELECT * FROM ad LEFT JOIN sections ON ad.sections=sections.id ORDER BY ad.id DESC LIMIT $start, $num");
if (mysql_num_rows($ad) == 0)
exit ("в данном разделе нет объявлений!");
while ($ad_ad = mysql_fetch_assoc($ad))
{
$text = $ad_ad['ad'];
$bb = new bbcode($text);
?>
<tbody>
<tr>
<td><?php echo $ad_ad['name']; ?></td>
<td><?php echo $ad_ad['name']; ?></td>
<td><?php echo $bb -> get_html(); ?></td>
<td><?php echo $ad_ad['phone']; ?></td>
<td><?php echo $ad_ad['date']; ?></td>
<td align="center">
<a href="edit_ad.php?id=<?php echo $ad_ad['id']; ?>">
<img src="images/edit.gif" width="24" height="24" border="0" alt="редактировать"/></a>
</td>
<td align="center">
<a href="remove_ad.php?id=<?php echo $ad_ad['id']; ?>" onclick="return confirm('Удалить?');">
<img src="images/remove.gif" width="24" height="24" border="0" alt="удалить" /></a>
</td>
</tr></tbody>
<?php
}
|
т.е. вот эти два поля из разных талиц, а как их идентифицировать?
<td><?php echo $ad_ad['name']; ?></td>
<td><?php echo $ad_ad['name']; ?></td>
|
| |
|
|
|
|
|
|
|
для: Bvz
(31.07.2009 в 00:23)
| | SELECT
sections .name as sname, sections.phone as sphone, sections.date as sdate,
ad.name as aname, ad.phone as aphone, ad.date as adate,
FROM
ad
LEFT JOIN
sections ON ad.sections=sections.id ORDER BY ad.id DESC LIMIT $start, $num
Как то так. То есть ты определенные поля выбираешь из таблицы и записываешь в другую переменную с помощью AS. На выходе получается две переменные sname - из таблицы sections
и aname - из таблицы ad. Мой запрос скорей всего не верный тк я не вижу твоей структуры таблиц и я вытащил одинаковые данные из двух таблиц. Ну я думаю смысл ты понял, если нет пиши =) | |
|
|
|
|
|
|
|
для: Ringo
(31.07.2009 в 09:33)
| | спасибо, вот так работает :)
$sql ="SELECT *, ad.name AS ad_name, sections.name AS sections_name, ad.id AS id_ad FROM ad LEFT JOIN sections ON ad.sections=sections.id ORDER BY ad.id DESC LIMIT ".$start.", ".$num;
|
| |
|
|
|