저는 연예인 사진 웹 사이트, 10 만 장의 사진을 보유하고 있습니다. 사용자가 "Oscar Awards Ceremony"검색을 수행했으며 현재 관련 사진을 표시하기 위해 결과를 반복합니다.MySQL/ASP - SQL 쿼리 혼동
이제 검색 결과 옆에있는 검색 상세 검색 열을 제공하고 해당 특정 이벤트에서 촬영 한 사람들의 구체적인 이름 (결과의 사진 ID를 기반으로 함)을 보여주고, 사진은 각 이름 옆에 표시되며 이름이 가장 높은 순서로 표시됩니다. 당신은 검색
:
과 같이 "오스카 시상식"(12489)
특정 사용자 :
브래드 피트 (1726)
안젤리나 졸리 (1,302)
(210)에드워드 노턴 (929) ...
이 내 데이터베이스 스키마입니다 :
photoSearch (tbl) photoID INT(11) Index Auto-Increment headline VarChar(1000) FullText caption VarChar(2500) FullText dateCreated DateTime Index photoPeople (tbl) photoID INT(11) peopleID INT(11) people (tbl) peopleID INT(11) Primary Auto-Increment people VarChar(255) Index그래서 기본적으로, 나는 사용자가 마지막으로 검색 PHOTOID의의 결과 세트가 있습니다. 그 결과 세트를 사용하여 'photoPeople'및 'people'테이블을 쿼리하여 해당 포토 ID와 관련된 사람들을 나열해야합니다. 수량을 표시하고 수량별로 정렬해야합니다.
어떻게해야합니까? 하나의 쿼리로 수행 할 수 있습니까? 계산하고 결과를 계산할 수 있도록 결과를 표에 써야합니까? 매우 도움이 될 것입니다하지만 난 그냥 방법에 대한 조언을 찾고 있어요, 내가 정확한 코드를 찾는 게 아니에요
SELECT * FROM people INNER JOIN photopeople ON photoPeople.peopleID = people.PeopleID WHERE photoID IN ('87345','8900','83458','63746')
:
이
내가 지금까지 수행하지만 사람들의 이름을 나열 한 것입니다 마음에 드는 성능으로 올바르게 수행 할 수 있습니다. 나는 내 두뇌가 관련있는 사람들을 보여줄 수 있다고 생각하지만, 어떤 순서로도 그리고 확실히 카운트가없는 것은 아니다!감사받은 어떤 도움 ...
P.S. 함께 일하는 해결책을 얻었을 때, 나는 이것을 나의 이벤트 테이블과 키워드에도 적용 할 것이다. 즉 누군가 "브래드 피트 (Brad Pitt)"를 검색하면 "검색 범위 조정"열에 "오스카 시상식"이라는 이벤트가 표시되고 그 옆에는 1,726 명이 표시됩니다.
감사합니다.웃기는 것, 나는 단지 내가 가진 생각을 실험하고 있었고, 둘 다 매우 흡사 했으므로 광산 작업도 마찬가지였다. SELECT COUNT (명) AS totalPeople, people FROM people INNER JOIN photopeople ON photoPeople.peopleID = people .PeopleID 어디에서 photoid IN ('87345', '8900', '83458', '63746', '82039', '53696', '53697', '53698') GROUP BY 사람 ORDER BY totalPeople DESC – TheCarver
플러스 그 이벤트에서 상위 5 개 이름 만 보여줄 것입니다. 따라서 성능은 괜찮을 것입니다. – TheCarver
예, 걱정하지 마십시오. 한 가지 다른 의견입니다. 이미 쿼리 결과 (즉, 사진 ID)를 다른 테이블에 저장 한 다음 IN 문을 사용하는 대신 테이블에 더 잘 조인하는 것이 좋습니다. – mrcrowl