SQL поможет получить данные от всех подписчиков? (как твиттер, если мы последуем) - PullRequest
4 голосов
/ 30 августа 2010

alt text

пример, если у меня есть

follow table
company one ( cid = 1 ) following two ( cid = 2 )
company one ( cid = 1 ) following three( cid = 3 )

feeds table
company one ( cid = 1 ) type 'product' description 'hello ive updated a product';
company two ( cid = 2 ) type 'product' description 'hello ive updated a product im from company 2';
company three ( cid = 3 ) type 'shoutout' description 'hello ive i got a shoutout im company 3';
company one ( cid = 1 ) type 'product' description 'hello ive updated my second product';

вопрос

как мне получить все feeds.description от компании, которая моя компания(пример здесь: cid = 1)?

вот мой простой pdo sql, чтобы получить только мой.

    $data['feeds']['cid'] = 1;

    return $this->db->fetchAll("SELECT feeds.type, feeds.$type, feeds.cid, feeds.time, companies.name FROM feeds, companies WHERE 
    feeds.cid = :cid AND companies.cid = :cid ORDER BY feeds.fid DESC LIMIT 0, 5", $data['feeds']);

this will display
hello ive updated a product
hello ive updated my second product

может быть что-то вроде этого?(ошибка)

    $data['feeds']['cid'] = 1,2,3;

    return $this->db->fetchAll("SELECT feeds.type, feeds.$type, feeds.cid, feeds.time, companies.name FROM feeds, companies WHERE 
    feeds.cid = :cid AND companies.cid = :cid ORDER BY feeds.fid DESC LIMIT 0, 5", $data['feeds']);

this should be displaying like
hello ive updated a product
hello ive updated a product im from company 2
hello ive i got a shoutout im company 3
hello ive updated my second product

или более простой способ получить feeds.description от каждого пользователя follow.following (cid = 1,2,3 и т. д.) от меня.(cid = 1) или если твиттер получит статус всех моих друзей (друзья, за которыми я подписан)

edit *

некоторые хорошие ребята из irc mysql сказали использовать joins.но я просто не понимаючто я получаю, это

fetch all the follow.following from cid = me ( example cid = 1 )

затем

SELECT * FROM feeds WHERE feeds.cid = IN (2,3,cid that im following ( see follow.following )) 

кто-нибудь может дать мне пример для объединений в этой проблеме?

1 Ответ

1 голос
/ 30 августа 2010

Итак, если предположить, что вопрос «Как я могу получить все feeds.description от компании, за которой следует моя компания?»Вы хотите присоединиться, используя следующий ключ:

select 
companies.name, 
feeds.type, 
feeds.description 
from follow 
inner join feeds on (follow.following = feeds.cid or follow.cid = feeds.cid)
inner join companies on (feeds.cid = companies.cid)
where follow.cid = :cid
order by feeds.fid desc 
limit 5;

В этом списке должны быть перечислены все компании, которым соответствует ваш: cid (1).

РЕДАКТИРОВАТЬ: Feedsдолжен включать каналы моей компании + каналы, за которыми следит моя компания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...