Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SELECT из трёх зависимых таблиц / 10 сообщений из 10, страница 1 из 1
26.08.2013, 11:21:50
    #38377216
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Здравствуйте, возникла проблема при составлении запроса, простенькие запросы писать умею, а тут что-то даже представить не могу как это реализовать.
Итак, есть 3 таблица (их дамп):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE TABLE IF NOT EXISTS `keywords` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `post-keywords` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `id_keyword` int(9) NOT NULL,
  `id_post` int(9) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;


CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `text` text NOT NULL,
  `date` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;



Таблица keywords - она содержит в себе название тегов
Таблица post-keywords - содержит id тега в таблице keywords, а также id записи таблицы posts
Таблица posts - в ней содержится информация о посте

И вот вопрос, как вытащить допустим 10 статей, и все теги, из таблицы post-keywords где id_post = posts.id, если есть такая запись то нужно вытянуть keyword.name зная post-keywords.id_keyword
Надеюсь вы меня поняли, просто целый день сижу думаю, гугл не помог
...
Рейтинг: 0 / 0
26.08.2013, 12:02:51
    #38377267
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Код: sql
1.
2.
3.
select * from
(select * from posts limit 10) subq, post-keywords, keywords
where post-keywords.id_keyword=keywords.id and post-keywords.id_post=subq.id
...
Рейтинг: 0 / 0
26.08.2013, 12:19:04
    #38377286
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
gtkuler,

Вот что я написал сам,
SELECT p.*,k.name FROM posts AS p
LEFT JOIN `post-keywords` AS pk ON p.id = pk.id_post
LEFT JOIN keywords AS k ON pk.id_keyword = p.id
ORDER BY p.id DESC LIMIT :num,:count
вроде работает, но не так как надо)
...
Рейтинг: 0 / 0
26.08.2013, 12:21:10
    #38377288
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Akina,

вот что мне вернул сервер:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
array(4) {
  [0]=>
  array(7) {
    ["id"]=>
    string(1) "1"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "1"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег1"
  }
  [1]=>
  array(7) {
    ["id"]=>
    string(1) "2"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "2"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег2"
  }
  [2]=>
  array(7) {
    ["id"]=>
    string(1) "3"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "3"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег3"
  }
  [3]=>
  array(7) {
    ["id"]=>
    string(1) "4"
    ["title"]=>
    string(28) "Всё о интернете"
    ["text"]=>
    string(41) "Тут просто сама статья"
    ["date"]=>
    string(1) "0"
    ["id_keyword"]=>
    string(1) "4"
    ["id_post"]=>
    string(1) "2"
    ["name"]=>
    string(7) "тег4"
  }
}


Никак нельзя сделать чтобы сервер возращал массив чисто с тегами или как0то так
НУ а по поводу этого, теперь просто перебрать этот массив?
...
Рейтинг: 0 / 0
26.08.2013, 12:28:53
    #38377293
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Akina,

вот что мне вернул сервер:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
array(4) {
  [0]=>
  array(7) {
    ["id"]=>
    string(1) "1"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "1"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег1"
  }
  [1]=>
  array(7) {
    ["id"]=>
    string(1) "2"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "2"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег2"
  }
  [2]=>
  array(7) {
    ["id"]=>
    string(1) "3"
    ["title"]=>
    string(16) "Интернет"
    ["text"]=>
    string(32) "Текст текст текст"
    ["date"]=>
    string(10) "1371186330"
    ["id_keyword"]=>
    string(1) "3"
    ["id_post"]=>
    string(1) "1"
    ["name"]=>
    string(7) "тег3"
  }
  [3]=>
  array(7) {
    ["id"]=>
    string(1) "4"
    ["title"]=>
    string(28) "Всё о интернете"
    ["text"]=>
    string(41) "Тут просто сама статья"
    ["date"]=>
    string(1) "0"
    ["id_keyword"]=>
    string(1) "4"
    ["id_post"]=>
    string(1) "2"
    ["name"]=>
    string(7) "тег4"
  }
}


Никак нельзя сделать чтобы сервер возращал массив чисто с тегами или как0то так
НУ а по поводу этого, теперь просто перебрать этот массив?
...
Рейтинг: 0 / 0
26.08.2013, 12:34:49
    #38377303
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
gtkulerвот что мне вернул сервер:
Ты данные получил? получил. Если не умеешь их обработать - нафига спрашивал?

В любом случае - зона ответственности кончилась, в форуме по MySQL с проблемами в PHP-программе никто тебе "помогать" не обязан.
...
Рейтинг: 0 / 0
26.08.2013, 12:58:43
    #38377335
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Akina, что за негатив? я говорил что мне кто-то что-то обязан? просто хотел спросить так должно возвращать или нет? я join`ыми до этого не работал
...
Рейтинг: 0 / 0
26.08.2013, 13:43:02
    #38377391
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
gtkulerпросто хотел спросить так должно возвращать или нет? я join`ыми до этого не работалНу так спрашивай там, где НАДО это спрашивать. Вот тут .
...
Рейтинг: 0 / 0
28.08.2013, 15:10:02
    #38379966
gtkuler
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Akina,

есть небольшой проблема, если keywords.name нет в бд, то он вообще не вытаскивается
...
Рейтинг: 0 / 0
28.08.2013, 16:31:58
    #38380102
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SELECT из трёх зависимых таблиц
Тогда замените декарт на левое связывание к подзапросу.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SELECT из трёх зависимых таблиц / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]