Есть две таблицы – с основной и дополнительной информацией.
Для постраничного вывода необходимо выбрать информацию об записях их определенного диапазона. В то время, как LIMIT применяется ко всем выбранным записям, в
Например:
CREATE TABLE users (
id_user smallint(3) unsigned NOT NULL default \'0\',
login varchar(50) NOT NULL default \'\',
pass varchar(50) NOT NULL default \'\'
) TYPE=MyISAM;
INSERT INTO users VALUES (1, \'log1\', \'pas1\');
INSERT INTO users VALUES (2, \'log2\', \'pas2\');
INSERT INTO users VALUES (3, \'log3\', \'pas3\');
CREATE TABLE info (
id_user smallint(3) unsigned NOT NULL default \'0\',
name varchar(50) NOT NULL default \'\',
value varchar(50) NOT NULL default \'\'
) TYPE=MyISAM;
INSERT INTO info VALUES (1, \'tel\', \'23423423\');
INSERT INTO info VALUES (2, \'tel\', \'03\');
INSERT INTO info VALUES (1, \'email\', \'log1@domen.com\');
INSERT INTO info VALUES (3, \'icq\', \'2\');
INSERT INTO info VALUES (3, \'email\', \'qqq\');
INSERT INTO info VALUES (3, \'tel\', \'03\');
INSERT INTO info VALUES (3, \'icq\', \'4\');
INSERT INTO info VALUES (3, \'icq\', \'5\');
SQL-запрос:
SELECT *
FROM users
JOIN info
USING ( id_user )
результат:
id_user | login | pass | id_user | name | value
------------------------------------------------
1 | log1 | pas1 | 1 | tel | 23423423
2 | log2 | pas2 | 2 | tel | 03
1 | log1 | pas1 | 1 | email | log1@domen.com
3 | log3 | pas3 | 3 | icq | 2
3 | log3 | pas3 | 3 | email | qqq
3 | log3 | pas3 | 3 | tel | 03
3 | log3 | pas3 | 3 | icq | 4
3 | log3 | pas3 | 3 | icq | 5
То есть LIMIT 0,5 выбирает значения с 0 по 5. А надо пользователей и информацию о них с 0 до 5.
Как это можно обойти?
Или, быть может, можно выбрать информацию в виде
1 | log1 | pas1 | 1 | tel | 23423423 | email | log1@domen.com | icq | 4
то есть чтоб каждому пользователю соответствовала одна строка в выборке?