Оптимизация загрузки сервера MySQL - PullRequest
0 голосов
/ 13 сентября 2011

Допустим, у нас есть таблицы 2 дБ. Первый стол "Ноутбуки"

id | имя


1 яблоко

2 сони ...

и второй стол "цвета"

id | цвет


1 белый

2 чёрный

2 красных

2 синих

...

Если я хочу получить html-таблицу вроде

ноутбук | Доступные цвета

яблоко 1 (белое)

Sony 3 (красный, синий, черный)

...

Мне нужно создать «while» и каждый раз запрашивать информацию для каждого ноутбука. Например, он будет загружать сервер, если имеется более 10 000 ноутбуков. Есть ли какой-нибудь оптимизированный способ заставить его работать?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

То, что вы ищете, это SQL JOIN. Однако вам нужно иметь таблицу, которая связывает обе таблицы вместе.

Что-то вроде

SELECT * FROM laptops t 
    LEFT JOIN colors c ON t.id=c.id

например. если вы хотите считать цвета, вы можете сделать что-то вроде этого:

SELECT t.id, t.name, COUNT(c.id) AS numberofcolors FROM laptops t 
    LEFT JOIN colors c ON t.id=c.id
    GROUP BY t.id
0 голосов
/ 13 сентября 2011

Если вам также необходимо вывести названия цветов, вы должны использовать GROUP_CONCAT

...