Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: madmad в Jun 08, 2010, 18:55



Титла: Селекция на 2 таблици в една заявка
Публикувано от: madmad в Jun 08, 2010, 18:55
Искам да избера 2 таблици в една база данни и то да ги кръстосам по следния начин.

едната таблица е members другата е members_data

Избера да избера всички клетки m.member_id, m.username, m.picture от първата таблица където m.lastvisit> е дадено време и където клетката d.data_webcam от втората таблица съдържа 452

Ето с какво пробвам, но ми дава 1 резултата по няколко пъти, което ми подсказва че не работи

Код:
	$result = $DB->query("SELECT m.member_id, m.username, m.picture
FROM " . DB_PREFIX . "members as m, " . DB_PREFIX . "members_data AS d
WHERE m.lastvisit>" . (time() - $PREFS->conf['user_timeout']*60) . "AND d.data_webcam=452
LIMIT " . (($page - 1) * $broi_online . ", " . $broi_online));


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: b2l в Jun 08, 2010, 19:04
Ммм не трябва ли да ги JOIN-неш двете таблици? Или аз нещо не мога да разбера условието което си задал?!


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: madmad в Jun 08, 2010, 19:08
Аз ако знаех нямаше да питам :)


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: luda_glawa в Jun 08, 2010, 20:16
Липсва ти връзката м/у двете таблици. Има ли поле, което да е еднакво и при двете?

Примерно:

SELECT a.id, a.data, b.id, b.data FROM table_a AS a, table_b AS b WHERE a.user_id = b.user_id AND a.data > 123 AND b.data = 321;

Като цяло май с join-ове е по-елегантния начин. Нямам идея обаче, кой е по-бързия.


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: senser в Jun 08, 2010, 20:23
Код:
SELECT  m.member_id, m.username, m.picture
FROM members AS m
INNER JOIN members_data AS d ON (d.member_id=m.id AND d.data_webcam=452)
WHERE m.lastvisit>"2010-06-08"
Това е при положение, че двете таблици са свързани с външен ключ - member_id във втората таблица. То на теб това и ти куца в заявката - в условиете WHERE ти липсва връзката между двете таблици, както е казал луда–глава.


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: madmad в Jun 09, 2010, 10:34
Решението:

Код:
	$result = $DB->query("SELECT m.member_id, m.username, m.picture
 FROM " . DB_PREFIX . "members as m, " . DB_PREFIX . "members_data AS d
 WHERE m.member_id=d.data_id
 AND d.data_webcam=452
 AND m.lastvisit>" . (time() - $PREFS->conf['user_timeout']*60) . "
 LIMIT " . (($page - 1) * $broi_online . ", " . $broi_online));


Титла: Re: Селекция на 2 таблици в една заявка
Публикувано от: chen_dzen в Jun 12, 2010, 21:34
SELECT [имена на колони] FROM[таблица 1] INNER JOIN [таблица 2] ON [таблица 1.колона]=[таблица 2.колона]
или
(SELECT [имена на колони] FROM [таблица 1]) UNION (SELECT [имена на колони] FROM [таблица 2])
това е !