Есть две проблемы, которые я вижу.Один немного требователен, а другой довольно фундаментален.
Представление данных в SQL
SQL возвращает наборы табличных данных.Он не может возвращать подмножества с заголовками, что-то похожее на сводную таблицу.
Это означает, что это невозможно ...
**BOB:**
Orange, $2230
**GREG:**
green, $360
blue, $170
Но это есть возможно ...
Bob, Orange, $2230
Greg, Green, $360
Greg, Blue, $170
Связанные данные
Я могу визуально увидеть, как вы связываете данные вместе ...
table customer table invoice
-------------- -------------
customer | common_id person | price |common_id
green 2 greg 360 2
blue 2 greg 170 2
orange 1 bob 2330 1
Но SQL не имеет никакого подразумеваемого порядка.Вещи могут быть связаны, только если выражение может утверждать, что они связаны.Например, следующее в равной степени возможно ...
table customer table invoice
-------------- -------------
customer | common_id person | price |common_id
green 2 greg 170 2 \ These two have
blue 2 greg 360 2 / been swapped
orange 1 bob 2330 1
Это означает, что вам нужны правила (и, вероятно, дополнительные поля), которые явно указывают, какая запись customer
соответствует какой записи invoice
, особенно когдакратны в обоих с одинаковыми common_id
.
Примером правила может быть, самая низкая цена всегда совпадает с первым клиентом в алфавитном порядке.Но что произойдет, если у вас есть три записей в customer
для common_id = 2
, но только две записей в invoice
за common_id = 2
?Или количество записей всегда совпадает, и вы обязуетесь к этому?
Скорее всего, вам понадобится дополнительная часть (или части) информации, чтобы знал , какие записи связаны друг с другом.