2014-02-27 5 views
1

Извините, я даже не знаю, как спросить, но это все. У меня есть один маленький стол с 30 рядами.MySQL, повторите все значения для каждого значения из первого столбца

Я хочу выбрать все значения из одного столбца и с каждым значением привести все значения из другого столбца, повторяя.

Позвольте мне показать, маленький пример, это мой стол и значения:

[column color]/[column qtd] 
blue/3 
red/5 
gray/7 
yellow/2 

Я хочу довести этот результат на SELECT, запрос:

blue/3 
blue/5 
blue/7 
blue/2 
red/3 
red/5 
red/7 
red/2 
gray/3 
gray/5 
gray/7 
gray/2 
yellow/3 
yellow/5 
yellow/7 
yellow/2 

Это принесет все значения от цвета столбца и принести все значения из qtd, повторяющиеся для каждого значения цвета.

К сожалению, это своего родом трудно объяснить :(

Но спасибо.

ответ

1

Вы можете выполнить CROSS JOIN против подзапроса возвращающего DISTINCT qtd из той же таблицы. Это приведет все строки из подзапроса соединяемых . для всех рядов DISTINCT color

SELECT DISTINCT 
    color, 
    q.qtd 
FROM 
    /* Assuming your table is `color` */ 
    color 
    /* CROSS JOIN (like an inner join with no ON clause) */ 
    CROSS JOIN (
    SELECT DISTINCT qtd FROM color 
) q 
ORDER BY color, q.qtd 

Вот демонстрация: http://sqlfiddle.com/#!2/42342/3

+0

, который идеально подходит, спасибо очень много. Cross Join, еще одна вещь, чтобы учиться. благодаря :) – saulob

1

Кажется, вам нужны все комбинации двух значений в вашей таблице. Используйте cross join с distinct:

select c.color, q.qtd 
from (select distinct color from table t) c cross join 
    (select distinct qtd from table t) q 
Смежные вопросы