|
|
|
| Из таблицы texts выбирается один текст, который принадлежит разделу меню. Вместе с текстом из другой таблицы img нужно выбрать 4 картинки. Как сделать запрос?
У меня было вот так:
$sql="SELECT *
FROM texts, img
WHERE menu.id_menu = texts.id_menu AND menu.id_menu = img.id_menu AND menu.id_menu = $_GET['id_menu']";
$result=mysql_query ($sql, $link);
while($row = mysql_fetch_assoc($result)){
print_r($row);
}
Но в этом случае 4 раза выбирается текст - т.е. к каждой картинке выбирается один и тот же текст.
Если делать путем соединения таблиц, то пробовала вот так:
$sql="SELECT * FROM texts AS t
LEFT JOIN img AS i
ON i.id_text = t.id
WHERE t.id_menu = i.id_menu
ORDER BY i.name";
Тогда выборка идет вот так: первый текст - первая картинка, второй текст - первая картинка; первый текст - вторая картинка, второй текст - вторая картинка
А мне нужно: первый текст + 4 картинки к нему, второй текст + 4 картинки, без повторов текста. Как это сделать?
UNION использовать нельзя: в таблицах разное количество полей. | |
|
|
|
|
|
|
|
для: Лена
(02.08.2008 в 14:25)
| | Нужно знать структуру таблиц (раздел phpMyAdmin Экспорт, дамп структуры) и то, как соединяются эти таблицы (по каким правилам строки одной из таблиц соотносятся со строками другой.) | |
|
|
|
|
946 байт |
|
|
для: Trianon
(02.08.2008 в 16:40)
| | В присоединенном файле - структура таблиц | |
|
|
|
|
|
|
|
для: Лена
(02.08.2008 в 17:04)
| | По идее Ваш вариант с LEFT JOIN должен выдавать набор данных, не путая картинки. Я бы взял за основу именно его.
Строк вроде немного, можно дамп полностью привести (и структуру и данные), чтоб понять почему картинки путаются. | |
|
|
|
|
|
|
|
для: Trianon
(02.08.2008 в 17:11)
| | Полный дамп привести не могу по той причине, что теперь не могу зайти в базу данных. В разделе Apache вы насоветовали мне поменять пароль. Давайте устраним сначала ту проблему, чтобы я могла привести вам полный дамп | |
|
|
|
|
|
|
|
для: Лена
(02.08.2008 в 17:28)
| | Надо найти каталог с phpmyadmin.
У меня , например, это Z:\home\localhost\www\Tools\phpMyAdmin
В этом каталоге найти файл config.inc.php
И в нем в строках
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = 'пароль';
|
поставить новый пароль. Тот, который Вы указали в разделе "привилегии". | |
|
|
|
|
|
|
|
для: Trianon
(02.08.2008 в 17:42)
| | Я вам ответила. В разделе Apache. | |
|
|
|
|
2.4 Кб |
|
|
для: Лена
(02.08.2008 в 17:52)
| | Теперь полный дамп в аттачменте | |
|
|
|
|
|
|
|
для: Лена
(02.08.2008 в 18:11)
| |
<?php
require_once('dbconfig.php');
$sql="SELECT *, t.id AS tid FROM texts AS t
LEFT JOIN img AS i
ON i.id_text = t.id
WHERE t.id_menu = i.id_menu
ORDER BY t.id, i.name";
$res = mysql_query($sql);
if(!$res) exit("Error in $sql: ". mysql_error());
for($p = 0; $row = mysql_fetch_assoc($res); )
{
if($p != $row['tid'])
{
echo "<hr />".$row['main_text']."<br />\r\n";
$p = $row['tid'];
}
echo "<img src=\"".$row['name']."\" /> \r\n";;
}
?>
|
Сортировку пришлось слегка изменить. | |
|
|
|
|
|
|
|
для: Trianon
(02.08.2008 в 18:32)
| | Спасибо, получилось. На самом деле все оказалось не так сложно.
Только вот здесь в конце - лишние ";":
echo "<img src=\"".$row['name']."\" /> \r\n";;
|
и пути к картинкам я указала | |
|
|
|