Надеюсь, кто-нибудь может помочь. Я занят созданием сайта электронной коммерции в Dreamweaver. На данный момент на сайте будут размещены музыкальные CD, DVD, фильмы и игры. У меня есть база данных, состоящая из большинства из упомянутых выше.
Теперь я сам все это построил и медленно учусь по ходу дела (немного знаю код, SQL, PHP и т. Д.)
Я создал панель поиска, которая выполняет поиск в базе данных по любому ключевому слову и возвращает результаты на новой странице. Я думал, что создал окончательную часть sql, но однажды я выполнил поиск альбома, в котором был трек-лист, и он придумал повторы этого конкретного альбома столько раз, сколько было песен в альбоме, например, 10 песен = 10 повторяет альбом, который для пользователя не является полезным.
Это мой код:
SELECT
Department.Dept, Artist.Artist, Catalogue.Title, Tracklisting.TrackTitle,
Catalogue.ImagePath, Catalogue.Sell, Catalogue.ID
FROM Department
INNER JOIN ((Artist INNER JOIN Catalogue ON Artist.ID =
Catalogue.Artist_ID) LEFT JOIN Tracklisting ON Catalogue.ID = Tracklisting.CatID) ON
Department.ID = Catalogue.Department_ID
WHERE Department.Dept Like '$select' AND Artist.Artist='$search' OR Department.Dept
Like '$select' AND Artist.Artist Like '%$search' OR Department.Dept Like '$select' AND
Artist.Artist Like '$search%' OR Department.Dept Like '$select' AND Artist.Artist
Like '%$search%' OR Department.Dept Like '$select' AND Catalogue.Title='$search' OR
Department.Dept Like '$select' AND Catalogue.Title like '%$search' OR Department.Dept
Like '$select' AND Catalogue.Title like'$search%' OR Department.Dept Like '$select'
AND Catalogue.Title like'%$search%' OR Department.Dept Like '$select' AND
Tracklisting.TrackTitle='$search' OR Department.Dept Like '$select' AND
Tracklisting.TrackTitle like'%$search' OR Department.Dept Like '$select' AND
Tracklisting.TrackTitle like'$search%' OR Department.Dept Like '$select' AND
Tracklisting.TrackTitle like'%$search%'
Это соединение ODBC, и все эти $ search и $ select - это мой php, получающий информацию из панели поиска и, например, выбор отдела. музыка или игры
В базе данных есть 4 таблицы, из которых я получаю информацию. Artist - Каталог - Треклист и отдел. Все 4 связаны, и я установил связь между треклистом и каталогом, поэтому, если треклистов нет, он все равно вытягивает информацию об альбоме.
Очевидно, что каждый альбом имеет несколько дорожек, поэтому каждая дорожка одного и того же альбома имеет один и тот же идентификатор, связанный с альбомом, который имеет уникальный идентификатор, а затем связан с таблицей исполнителей, где каждый исполнитель имеет уникальный идентификатор.
Затем запрос отображается в виде таблицы в HTML на PHP, поэтому его можно отображать снова и снова, в зависимости от того, есть ли альбомы для многократного отображения, но разные альбомы не совпадают с тем, что происходит сейчас с траклистом.
Я искал ответы все выше и ниже, и этим утром я подумал, что нашел это ... GROUP BY
Мне не удалось заставить группу работать, и я продолжаю получать эту ошибку. Вы попытались выполнить запрос, который не включает указанное выражение «Dept», как часть агрегатной функции.
Есть ли способ указать php отображать только один элемент, если он начинает повторяться или ему нужно перейти в sql с GROUP BY, который я использовал неправильно.
Я обнаружил, что если я удаляю трек-лист из запроса sql, он исправлен, но тогда никто не сможет искать по песне. Может быть, есть способ создать 2 разных запроса ??
Любая помощь будет высоко ценится.
EDIT!
Это был последний код, за который Ларри ответил за меня, за что я очень благодарен. Remous код также может работать, но я должен заставить его работать
"SELECT Department.Dept, Artist.Artist, Catalogue.Title, Catalogue.ImagePath,
Catalogue.Sell, Catalogue.ID
FROM Department INNER JOIN (Artist INNER JOIN Catalogue ON Artist.ID =
Catalogue.Artist_ID) ON Department.ID = Catalogue.Department_ID
WHERE Department.Dept Like '$select' AND (Artist.Artist Like '%$search%' OR Catalogue.Title like'%$search%' OR Catalogue.ID IN (SELECT CatID
FROM TrackListing
WHERE TrackTitle like'%$search%'))";
Большое спасибо всем, кто помог !!!