2014-01-25 4 views
0

У меня есть следующий «TBLA» и «TBLB» стол:получить все другие имена пользователей, где пользователь = 1 существует

CREATE TABLE if not exists tblA 
(
    id int(11) NOT NULL auto_increment, 
    sender varchar(255), 
    receiver varchar(255), 
    msg varchar(255), 
    date timestamp, 
    PRIMARY KEY (id) 
); 

CREATE TABLE if not exists tblB 
(
    id int(11) NOT NULL auto_increment, 
    sno varchar(255), 
    name varchar(255), 
    PRIMARY KEY (id) 
); 

INSERT INTO tblA (sender, receiver, msg,date) VALUES 
('1', '2', 'buzz ...','2011-08-21 14:11:09'), 
('1', '2', 'test ...','2011-08-21 14:12:19'), 
('1', '2', 'check ...','2011-08-21 14:13:29'), 
('1', '1', 'test2 ...','2011-08-21 14:14:09'), 
('2', '1', 'check2 ...','2011-08-21 14:15:09'), 
('2', '1', 'test3 ...','2011-08-21 14:16:09'), 
('1', '2', 'buzz ...','2011-08-21 14:17:09'), 
('1', '2', 'test ...','2011-08-21 14:18:19'), 
('1', '2', 'check ...','2011-08-21 14:19:29'), 
('1', '1', 'test2 ...','2011-08-21 14:10:09'), 
('3', '1', 'check2 ...','2011-08-21 14:21:09'), 
('3', '1', 'test3 ...','2011-08-21 14:22:09'), 
('3', '2', 'buzz ...','2011-08-21 14:24:09'), 
('3', '2', 'test ...','2011-08-21 14:25:19'), 
('1', '3', 'check ...','2011-08-21 14:26:29'), 
('1', '3', 'test2 ...','2011-08-21 14:27:09'), 
('2', '3', 'check2 ...','2011-08-21 14:28:09'), 
('2', '3', 'test3 ...','2011-08-21 14:29:09'), 
('1', '2', 'check3 ...','2011-08-21 14:23:09'), 
('1', '4', 'test2 ...','2011-08-21 14:27:09'), 
('1', '5', 'test2 ...','2011-08-21 14:27:09'), 
('2', '6', 'check2 ...','2011-08-21 14:28:09'), 
('2', '7', 'test3 ...','2011-08-21 14:29:09'), 
('8', '2', 'check3 ...','2011-08-21 14:23:09'); 


INSERT INTO tblB (sno, name) VALUES 
('1', 'Aa'), 
('2', 'Bb'), 
('3', 'Cc'), 
('4', 'Dd'), 
('5', 'Ee'), 
('6', 'Ff'), 
('7', 'Gg'), 
('8', 'Hh'); 

Как получить все строки с пользователем: 1 существующих наряду с именем отправителя/приемник, который не является 1 (т.е. Aa)

+0

Что пользователь .. – Mihai

+0

пользователь мне в этом случае SNO = 1 и имя = 'Aa' – jason

+0

Так что вы хотите, чтобы пользователи, которые не были получены или отправлены какие-либо сообщения? – Shomz

ответ

1

Я думаю, что это будет получить уникальный список:

select distinct b.name 
from tblA a join 
    tblB b 
    on b.id in (a.sender, a.receiver) and 
     ((b.id <> 1 and (a.sender = 1 or a.receiver = 1)) or 
     (a.sender = 1 and a.receiver = 1) 
     ); 
+0

Привет, сэр Я собирался опубликовать ссылку на вас. Спасибо за то, что заглянули в нее .http: //www.sqlfiddle.com/#! 2/49f8c/28. Это показывает все строки, даже без 1. – jason

+0

этот запрос исключает строку, в которой оба отправителя и получателя равны 1. Я тоже хотел бы включить это. Как мне это сделать? Кроме того, это правильно. – jason

+0

Супер сэр. Спасибо. – jason

0
SELECT ta.*, tb.name 
FROM tablA ta, tablB tb WHERE (ta.sender = tb.sno OR ta.receiver = tb.sno) 
         AND tb.sno <> 1 
0

ли это так:

$result = mysqli_query($yourconnectiondata,"SELECT * FROM yourtable WHERE User=1"); 
while($row = mysqli_fetch_array($result)) 
{ 
    //Here you can get your receiver like this: 
    $myvar = $row['reciever']; 
} 
Смежные вопросы