есть код рабочий но в нем при выборке всегда повторяется $content пробовал ставить group by но это не спасает так как выборка из соседней таблицы не происходит
$result = $pdo->prepare('SELECT DISTINCT news.content, newsImg.id, newsImg.idNews, newsImg.img_Realtor, newsImg.filename, newsImg.imgRealtorSmall, newsImg.fileNameSmall
FROM news
LEFT JOIN newsImg
ON news.id=newsImg.idNews
ORDER BY newsImg.id DESC;');
$result->execute();
if($result->rowCount() > 0){
while ($myrow = $result->fetch(PDO::FETCH_ASSOC)){
$content = $myrow["content"];
$idNews = $myrow["idNews"];
$img_Realtor = $myrow["img_Realtor"];
$filename = $myrow["filename"];
$imgRealtorSmall = $myrow["imgRealtorSmall"];
$fileNameSmall = $myrow["fileNameSmall"];
$file = explode(',', $fileNameSmall);
echo" <div class='col-md-12'>
<h5>".$content."</h5>";
foreach ($file as $key) {
echo
"<img src='".$imgRealtorSmall.$key."' style='width: 100px; height: 100px; margin-bottom: 10px;'></div><hr><br>";
}
}
}
Вашу задачу можно решить с помощью использования переменных в запросе SQL. Для наглядности вот подготовка данных:
CREATE TABLE NewsImg (
Id INT,
NewsId INT,
FileName VARCHAR(50)
);
CREATE TABLE News (
Id INT,
content VARCHAR(10024)
);
INSERT News SELECT 3, 'some third content';
INSERT News SELECT 4, '<3 <3 <3 <3 <3 <3.';
INSERT News SELECT 5, '(.)(.)(.)(.)(.)(.)';
INSERT NewsImg SELECT 1, 3, 'file1.jpg';
INSERT NewsImg SELECT 2, 3, 'file2.jpg';
INSERT NewsImg SELECT 3, 4, 'file3.jpg';
INSERT NewsImg SELECT 4, 4, 'file4.jpg';
INSERT NewsImg SELECT 5, 5, 'file5.jpg';
Ваш запрос в упрощённом виде:
SELECT N.content, I.*
FROM News N
LEFT JOIN NewsImg I ON N.Id = I.NewsId
ORDER BY I.Id DESC
Его результат:
content, Id, NewsId, FileName
(.)(.)(.)(.)(.)(.), 5, 5, file5.jpg
<3 <3 <3 <3 <3 <3., 4, 4, file4.jpg
<3 <3 <3 <3 <3 <3., 3, 4, file3.jpg
some third content, 2, 3, file2.jpg
some third content, 1, 3, file1.jpg
Запрос с использованием переменных:
SELECT
IF (RowType = 'First', content, null) content,
Id, NewsId, FileName
FROM(
SELECT N.content, I.*,
IF(@LastNewsId = I.NewsId, 'Not first', 'First')RowType,
@LastNewsId := I.NewsId
FROM News N
LEFT JOIN NewsImg I ON N.Id = I.NewsId
CROSS JOIN (SELECT @LastNewsId := NULL)L
ORDER BY I.NewsId DESC, I.Id DESC
)T
Результат:
# content, Id, NewsId, FileName
(.)(.)(.)(.)(.)(.), 5, 5, file5.jpg
NULL , 4, 4, file4.jpg
<3 <3 <3 <3 <3 <3., 3, 4, file3.jpg
NULL , 2, 3, file2.jpg
some third content, 1, 3, file1.jpg
Я не буду подробно расписывать как это работает. Можете прочесть на эту тему статью: MySQL. Использование переменных в запросе
Сборка персонального компьютера от Artline: умный выбор для современных пользователей