|
|
|
| можно ли выбрать из одной таблицы все записи а из другой по одной записи, связанной с записями из первой? Вопрос лично к Trianonу, так как у меня впечатление, что он знает все тонкость mySQL | |
|
|
|
|
|
|
|
для: kosta_in_net
(08.01.2010 в 00:43)
| | >все тонкость mySQL
Он Вам скажет прикрепляйте дамп, с точным объяснением чего из чего и почему можно или нельзя выбирать , я так думаю.
Это как спросить в аптеке "чего лучше от чихания посоветуете" :)
// имел ввиду можеть у вас аллергия на парацетамол | |
|
|
|
|
|
|
|
для: heed
(08.01.2010 в 02:02)
| | Да че там дампить? Пусть таблицы будут такими:
table1
id_razdel int
name_razdel text
table2
id_razdel int
name_text text
sam_text text
id_content int
и по полю id_razdel они связаны. Можно ли выбрать все записи из table1 и по одной, связанной из table2? | |
|
|
|
|
|
|
|
для: kosta_in_net
(08.01.2010 в 00:43)
| | ужель не Вам лично я намедни показал, как это делается, на примере таблиц applicants - education ? | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2010 в 09:39)
| | всмысле, через GROUP BY ? (прошу понять меня правильно, но по некоторым причинам сейчас я не могу нормально сосредоточится, я даже нормально выспаться не могу). | |
|
|
|
|
|
|
|
для: kosta_in_net
(08.01.2010 в 11:00)
| | там оба варианта - один с группировкой, другой - без.
Выспаться следует в первую очередь.
Изучать SQL на уставшую голову смысла нет никакого. | |
|
|
|
|
|
|
|
для: Trianon
(08.01.2010 в 15:46)
| | а если усложнить задачу? Если нужно не по одному полю выбрать, а по три (к примеру). Такое возможно? | |
|
|
|
|
|
|
|
для: kosta_in_net
(09.01.2010 в 00:05)
| | не понял, что означает "выбрать по полю (по три поля)"
Но наверное возможно. Если аккуратно. | |
|
|
|
|
|
|
|
для: Trianon
(09.01.2010 в 02:37)
| | чё-то я залудил. Имел в виду по 3 записи для каждой записи из таблицы 1 | |
|
|
|
|
|
|
|
для: kosta_in_net
(09.01.2010 в 02:57)
| | heed (08.01.2010 в 02:02) оказался прав абсолютно. | |
|
|
|
|
автор: .heed (10.01.2010 в 14:12) |
|
|
для: kosta_in_net
(09.01.2010 в 00:05)
| | если делать так чтобы сильно грузило сервер ,) то вот-так например можно придумать
CREATE TABLE `par` (
`id` TINYINT AUTO_INCREMENT,
`titl` TINYTEXT,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
CREATE TABLE `chil` (
`id` SMALLINT AUTO_INCREMENT,
`par_id` TINYINT,
`txt` TINYTEXT,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO par VALUES
(NULL, "раз"),
(NULL, "два"),
(NULL, "три"),
(NULL, "четыре");
INSERT INTO chil VALUES
(NULL, 1, "1_раз"),
(NULL, 1, "2_раз"),
(NULL, 2, "1_два"),
(NULL, 2, "2_два"),
(NULL, 2, "3_два"),
(NULL, 2, "4_два"),
(NULL, 3, "1_три"),
(NULL, 5, "1_пять"),
(NULL, 5, "2_пять"),
(NULL, 1, "3_раз");
SELECT a.id, a.titl, b.txt
FROM chil b LEFT JOIN par a
ON a.id = b.par_id
WHERE a.id
GROUP BY a.id, b.id
HAVING
IFNULL(@x, @x := a.id) AND IFNULL(@z, @z := 1) AND
IF(@x = a.id
, ((@z := (1+@z)) AND @z < 4)
, ((@x := a.id) AND @z := 1));
DROP TABLE par;
DROP TABLE chil;
|
можно ещё хранимые процедуры или VIEW'ы делать | |
|
|
|
|
|
|
|
для: .heed
(10.01.2010 в 14:12)
| | мне нравится твое чувство юмора ;)
Но вот, ответь мне, почему ты не подсказал что-то типа такого:
SELECT * FROM `table1`
LEFT JOIN `table2` ON table1.id = table2.id
GROUP BY table1.id
LIMIT 0 , 20;
|
? | |
|
|
|
|
|
|
|
для: kosta_in_net
(08.01.2010 в 11:00)
| | > прошу понять меня правильно, но по некоторым причинам сейчас я не могу нормально сосредоточится, я даже нормально выспаться не могу
и здесь нытики... как Вас много стало... всегда у Вас вечные проблемы, и всё через одно место... | |
|
|
|
|
|
|
|
для: Diplex
(08.01.2010 в 23:09)
| | Он не ноет, а извиняется за то, что может чт0-то неправильно понять. | |
|
|
|
|
|
|
|
для: Diplex
(08.01.2010 в 23:09)
| | не спеши с выводами. | |
|
|
|