FileMaker를 사용하고 (다른 데이터베이스로 점진적으로 시스템을 전환해야하는) 새로운 작업에 참여했습니다. 필자는 ~ 2 년 동안 MS SQL Server 데이터베이스의 DB 관리자였으며 PL/SQL과 T-SQL에 정통합니다. ExecuteSQL 기능을 사용하여 SQL 지식을 FMP로 옮기기 위해 노력하고 있으며, 많은 작은 고통을 겪고 있습니다. :)몇 가지 질문이있는 FMP12에서 ExecuteSQL을 학습하십시오.
나는 두 개의 테이블을 가지고 있습니다 : Movies and Genres. 관련 열은 다음과 같습니다
영화 (MovieId, moviename에는, GenreId, 평가) 나는 각각의 장르에서 가장 높은 등급의 영화를 발견하기 위해 노력하고있어
장르 (GenreId, GenreName) . 이에 대한 SQL 쿼리는 다음과 같습니다
SELECT M.MovieName
FROM Movies M INNER JOIN Genres G ON M.GenreId=G.GenreId
WHERE M.Rating=
(
SELECT MAX(Rating) FROM Movies WHERE GenreId = M.GenreId
)
내가 최선 내가 할 수있는 등의 ExecuteSQL 쿼리에이 번역 :
ExecuteSQL ("
SELECT M::MovieName FROM Movies M INNER JOIN Genres G ON M::GenreId=G::GenreId
WHERE M::Rating =
(SELECT MAX(M2::Rating) FROM Movies M2 WHERE M2::GenreId = M::GenreId)
"; "" ; "")
나는 텍스트로 필드 유형을 설정하고 또한 값이 저장되지 않습니다 보장. 하지만 내가 보는 모든 것은 '?' 점수.
내가 여기서 뭘 잘못하고 있니? 정말 어리석은 일이라면 유감이지만 FMP를 처음 접했을 때 어떤 제안이라도 환영받을 것입니다.
감사합니다.
- 램
UPDATE : 해결하고 거기에 도착하는 데 걸린 생각 과정 : 내가 문제를 해결 도움이 모든 사람에게
감사합니다. 여러분은 저에게 전통적인 SQL 생각 프로세스가 FMP로 정확히 이동하지 않는다는 사실을 깨닫게했습니다. 그리고 내가 탐색했을 때 FMP에서 SQL 지식을 가장 잘 사용하려면 각 열을 독립적으로 고려해야하며 전체 결과를 생각해서는 안됩니다. 쿼리를 작성할 때 설정됩니다. 이것은 나의 현재 기능을 위해, JOIN이 더 이상 필요 없다는 것을 의미합니다. JOIN은 FMP가 자동으로 매핑하는 다른 열인 GenreName을 가져와야했습니다. JOIN을 제거하기 만하면 완벽하게 작동합니다. TL : DR : 사고 프로세스 컨텍스트는 전체 예상 결과 집합이 아닌 현재 열이어야합니다. 다시 한번
, 당신에게 @MissJack, @Chuck (어떻게 당신도 그 이름을 얻었 는가?), @의 pft221을 감사 michael.hor257k
SQL Sugar 모듈을 연결하는 주석으로, 쿼리 작성시 매우 유용합니다. http://www.modularfilemaker.org/2013/03/filemaker-sql-sugar/ – pft221
Thanks @MissJack - 일단 FMP가 설치된 컴퓨터에 도착하면 이것들을 사용할 수 있습니다. FMP는 내가 다루었 던 모든 다른 데이터베이스와는 달리 진보적이지 않은 방식으로 근본적으로 다르며,이 점이 나를 괴롭힌다! –
@RamRS Filemaker는 SQL 데이터베이스가 아닙니다. 제한된 SQL 명령 집합을 지원하지만 고유 기술을 사용하는 것이 가장 좋은 경우가 가장 많습니다. –