2016-01-10 3 views
1

У меня есть 2 таблицы. Я борюсь за информацию. Думаю, я что-то пропускаю.проблема со списком столов для списка участников

users 
----- 
uid username rank_id reg_date  country 

mil_rank 
----- 
rank_id rank_title  


Desired output: 
--------------- 

    Username  Rank Title Reg Date Country 
    john   sgt  today  usa 



$sql = "SELECT * users.uid, mil_rank.rank_title ". 
    "FROM users, mil_rank ". 
    "WHERE users.rank_id = users.rank_title"; 

Я хотел бы, чтобы выбрать все из обеих таблиц, если возможно

+0

Так в чем же проблема? Вы получаете сообщение об ошибке? Неправильный вывод? – Mureinik

+0

Либо удалите '*' или добавьте запятую после нее. – RiggsFolly

ответ

1

Вы должны использовать ключ rank_id, чтобы связать две таблицы вместе:

SELECT users.username, mil_rank.rank_title, users.reg_date, users.country 
FROM users, mil_rank 
WHERE users.rank_id = mil_rank.rank_id 

Поскольку rank_id колонке присутствует в обе таблицы, и вы не хотите, чтобы это или столбец uid на вашем выходе, вы, вероятно, также не хотите просто выбрать *.

+1

Зачем OP «попробуйте это»? ** Хороший ответ ** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO, которые могут найти этот вопрос и прочитать ваш ответ. – RiggsFolly

+0

Там вы идете, хороший ответ пожинает плоды. – RiggsFolly

1

Попробуйте этот пример

SELECT u.uid, u.username, u.rank_id, u.reg_date, u.country, m.rank_id, m.rank_title 
FROM users u, mil_rank m 
WHERE u.rank_id = m.rank_id 
+1

Зачем OP «попробуйте это»? ** Хороший ответ ** всегда будет объяснять, что было сделано и почему это было сделано таким образом, не только для OP, но и для будущих посетителей SO, которые могут найти этот вопрос и прочитать ваш ответ. – RiggsFolly

1

Если вы хотите использовать JOIN, то это, как можно было бы написать этот запрос

SELECT u.username, u.reg_date, u.country, m.rank_title 
FROM users u 
    JOIN mil_rank m ON m.rank_id = u.rank_id 

Если вы хотите, чтобы это для определенного ранга, то

SELECT u.username, u.reg_date, u.country, m.rank_title 
FROM users u 
    JOIN mil_rank m ON m.rank_id = u.rank_id 
WHERE m.rank_title = 'sgt' 

В ответ на ваш ответ Да

SELECT u.username, u.reg_date, u.country, m.rank_title 
FROM users u 
    JOIN mil_rank m ON m.rank_id = u.rank_id 
WHERE u.status_id != 1 

Возможно, если вы прочитаете Basic SQL Tutorial, вы сможете сами сделать основной материал.

+0

все отлично выглядит, как я надеялся, но есть ли способ перечислять только те, у которых есть статус_ид в пользователях, не равный 1 – Phpfreak

2

Есть апостроф " и пункты . тоже. Вот хороший синтаксис

$sql = "SELECT users.uid, mil_rank.rank_title 
     FROM users, mil_rank 
     WHERE users.rank_id = users.rank_title"; 
Смежные вопросы