извежда ми резултати за всеки потребител

dunix

Registered
Здравейте,

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


Заявката, която ползвам е:

PHP:
	$result = $DB->query("SELECT s.*, m.member_id, m.username
			FROM members as m, share as s 
			WHERE s.active='1'
			ORDER BY s.postdate DESC");


db ми е:

[sql]

CREATE TABLE IF NOT EXISTS `share` (
`share_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`member_id` int(9) NOT NULL,
`body` text,
`postdate` int(10) unsigned NOT NULL,
`comments` tinyint(1) unsigned NOT NULL DEFAULT '0',
`totalcomments` smallint(5) unsigned NOT NULL DEFAULT '0',
`active` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`share_id`),
KEY `member_id` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

[/sql]

къде ми е грешката?

Редакция:
пробвах като сложих DISTINCT след SELECT, но нямаше ефект

снимка на това какво се случва:
a6qp.png
 
[sql]SELECT s.*, m.member_id, m.username
FROM members as m, share as s
WHERE s.active='1' AND m.member_id = s.member_id
ORDER BY s.postdate DESC
[/sql]

Така??
 
Така извежда резултатите на потребителя в който съм. Все едно разглеждам само неговите постове
 
dunix каза:
Така извежда резултатите на потребителя в който съм. Все едно разглеждам само неговите постове

Виж това: http://www.w3schools.com/sql/sql_join_inner.asp
 
И така пробвах преди малко


PHP:
$result = $DB->query("SELECT m.member_id, m.username, s.*
			FROM members AS m LEFT JOIN share as s ON m.member_id=s.member_id
			WHERE s.active='1'");

Трябва да извежда всички резултати от таблицата share и от таблицата members да взема member_id и username за да мога да ги показвам и в същото време да давам линк към потребителя, който го е постнал
 
dunix каза:
И така пробвах преди малко


PHP:
$result = $DB->query("SELECT m.member_id, m.username, s.*
			FROM members AS m LEFT JOIN share as s ON m.member_id=s.member_id
			WHERE s.active='1'");

Трябва да извежда всички резултати от таблицата share и от таблицата members да взема member_id и username за да мога да ги показвам и в същото време да давам линк към потребителя, който го е постнал

Така не става ли? В таблицата members полето member_id ли е или само id?
 
member_id е полето в двете таблици (специално за да не се бъркам).

Като го направя така ми извежда всички публикации, но не ми показва от кой потребител е написана

PHP:
$result = $DB->query("SELECT * FROM share

			WHERE active='1' 

			ORDER BY postdate DESC 

			");

Редакция:
успях да го докарам да извеждам моето име, но не и на друг потребител, които е публикувал. Направих заявката така:

PHP:
	$result = $DB->query("SELECT s.*, m.username
			FROM share as s LEFT JOIN members as m ON s.member_id=m.member_id
			WHERE s.active='1' 
			ORDER BY postdate DESC");

y40l.png
 
добре аз не виждам да къде идва ИД-то на поста, за който искаш да искараш мненията .. :shock: :shock: :shock: :idea: :idea:

смислл ... тряя да има такъв вид:
Код:
SELECT s.*, m.member_id, m.username
                        FROM members as m, share as s 
                        WHERE s.active='1' AND s.share_id='$get_id'
                        ORDER BY s.postdate DESC

и съответно щи изведе коментарите/постовете/мениеята или там каквото са .. само за определено ид . .. :?:
 
joTunkiq каза:
и съответно щи изведе коментарите/постовете/мениеята или там каквото са .. само за определено ид . .. :?:

Аз не искам да изкарам мненията на някой пост. Искам да изведа всички постове. След това ще направя страница в която ще извеждам коментарите към поста.
 
Надявам се тестваш заявките в MySQL CLI/PHPMyAdmin?

Заявката на @deam0n изглежда правилна и би трябвало да ти свърши работа? Може би имаш нещо в самия PHP код?

Edit:

[sql]SELECT s.*, m.member_id, m.username
FROM share as s
JOIN members as m ON s.member_id = s.member_id
WHERE s.active='1'
ORDER BY s.postdate DESC[/sql]
?
 
eLite каза:
Имаш ли PHPMyAdmin? Можеш ли да пуснеш заявката там и да export-неш резултата?

Имам phpMyAdmin.
Проблема в който не ми показваше потребителското име е, че нямах потребител с id 2.
 

Back
Горе