2011-09-08 131 views
0

我有两个表: 项目:与左加入MySQL查询?

| Item| 
    A 
    B 
    C 

userItems:

| UID | Item 
    1  A 
    1  C 

该循环从表项示出了数据:

$data = mysql_query("SELECT * FROM `Items`ORDER by `Icons` ASC"); 

while($row = mysql_fetch_array($data)) 
    { 
    echo $row['Item']; 
    echo "Unlock"; 
    } 

基本上我需要显示解锁,而不是如果具有UID = $ uid的用户拥有该项目,请解锁。

此查询获取用户的项目:

$data = mysql_query("SELECT * FROM `userItems` WHERE `UID` = '$uid'"); 

我认为解决方案是一个左连接,但我不知道该怎么做。我怎样才能使它工作?

+0

为什么你从'Items'表查询呢?你在'userItems'中也有'Item'列。 – zerkms

+0

我可以在注册时将所有项目插入'userItems'并添加另一列,但如果我想在未来添加新项目,则更容易拥有不同的表格。 – lisovaccaro

+0

@zerkms我认为'Items'表中比单个列更多,'Icons'例如 – Phil

回答

1
SELECT Items.*, useritems.UID FROM `Items` 
    left join useritems on Items.Item=useritems.Item 
    ORDER by `Icons` ASC 

就用逻辑在PHP中显示时自动解锁用户$行[“items.UID”]等于$ UID

+0

我会改变'* '到'Items,*,userItems.UID'。只能使用连接表来遵守单个'*'。谁知道你要回去 – Phil

+0

你说得对。我不知道可能在这些表中潜伏着什么。 ;) –

+0

谢谢!它完美地工作 – lisovaccaro