설명하기가 다소 힘듭니다. 예를 들어 번호가 1 인 경우 숫자를 모두 한 번만 사용하면서 모든 가능한 숫자 조합을 얻으려고합니다. 3 그룹의 고유 한 조합 (10)를 통해하고 싶은 :가능한 모든 조합을 찾을 수있는보다 효율적인 방법
1,2,3
4,5,6
7,8,9
이 잘하지만 나는 현재 내가 갖는 첫 번째 그룹에 대한 그래서 일부 테이블에 조인 데카르트를하고 있어요 :
1,2,3
3,2,1
1,3,2
2,3,1
2,1,3
등 ... 이미 1,2,3 번 사용 했으므로 다른 모든 조합을 원하지 않습니다. 그것.
이것은 현재 사용하고있는 코드이며, SQL에서 원하는 것을 수행하는 방법을 잘 모르겠습니다. id1, id2, id3은 가능한 모든 조합을 찾으려고 시도하는 3 개의 숫자입니다.
INSERT INTO recipe_index
SELECT distinct '3' as nummeals, t1.id as id1, t2.id as id2, t3.id as id3,
t1.calories+t2.calories+t3.calories as calories, t1.protein+t2.protein+t3.protein as
protein, t1.carbohydrate+t2.carbohydrate+t3.carbohydrate as carbohydrate,
t1.fat+t2.fat+t3.fat as fat from recipes t1, recipes t2, recipes t3
나는이 (중복을 생산하지 않고 모든 레시피 ID에 찍은 세 IDS의 모든 조합을 생성합니다
SQL이 설정 기반을; 나는 이것이 SQL의 최선의 사용이라고 생각하지 않는다. – duffymo
나는 이것이 야간 일의 무언가 일 것이기 때문에 정기적으로 달리지는 않았다. 현재 상태 (3 자리 숫자 그룹)에서 최대 6 자리 숫자 (각 숫자는 1 - 80 사이)까지 가져와야하므로 그 시점의 결과 값이 매우 높기 때문에 SQL (또는 다른 방법)에서보다 효율적인 방법을 찾으려고 노력합니다. – Neostim
이전 주석 작성자는 SQL에 적합하지 않다고 동의합니다. 즉, 당신이하고있는 일은 데이터베이스에서 검색하는 집합의 멤버의 수학적 조합 [http://en.wikipedia.org/wiki/Combination]을 가져 오는 것입니다. SQL에서보다 코드에서 이것을하는 것이 더 나을 것입니다. – TAH