Вы действительно хотите нормализовать это немного больше.Проверьте http://en.wikipedia.org/wiki/First_normal_form
Я думаю, что вы делаете:
Beer
BeerID BeerName BeerManufacturer
------ -------- ----------------
1 Beer1 Brewer 1
2 Beer2 Brewer 1
3 Beer3 Brewer 2
4 Beer4 Brewer 3
AltBeer
AltBeerID BeerID BeerID1 BeerID2 BeerID3
--------- ------ ------- ------- -------
1 1 3 4
2 2 5
3 4 7
Вместо этого вы хотите иметь только один столбец для альтернативных сортов пива.В этом случае AltBeer становится
AltBeer
AltBeerID BeerID AltBeer
--------- ------ -------
1 1 3
1 1 4
2 2 5
3 4 7
Затем выполнение объединения на Beer и AltBeer (на основе BeerID) даст вам список BeersID, которые похожи на исходное пиво.Вы можете узнать подробности об альтернативных сортах пива, снова присоединившись к Beer (на основе BeerID и AltBeer)
SELECT beer.beermanufacturer,
beer.beername,
beer_1.beername AS recbeer,
beer_1.beermanufacturer AS recbeerman
FROM (altbeer
INNER JOIN beer
ON altbeer.beerid = beer.beerid)
INNER JOIN beer AS beer_1
ON altbeer.altbeer = beer_1.beerid;
В результате получится что-то вроде этого (без дупс, гарантировано)
BeerName BeerManufacturer RecBeer RecBeerMan
-------- ---------------- ------- -----------
Beer1 BeerMan1 Beer3 BeerMan2
Beer1 BeerMan1 Beer4 BeerMan3
(Конечно, если бы мы все правильно нормализовали, мы бы также разделили производителя пива на его собственную таблицу, поскольку между пивом и производителем существует отношение многие к одному.)