2010-07-10 88 views
-2

有2台帮助与SQL查询

1st {id_city,name } 
2nd table {id_ctz,name,sname,age,id_city} 

需要进行选择的全部信息(名称(市),姓名,SNAME,年龄)的人具有相同名称的年龄accending?

曾尝试:

select city.name,citizen.name,age 
from citizen,city where city.id_city = citizen.id_city and citizen.name = '%s' 
order by age asc 

输入varible是名

+5

那么,你有什么尝试? – 2010-07-10 18:27:41

+0

select city.name,citizen.name,年龄来自市民,city.id_city = citizen.id_city和citizen.name ='%s'按年龄排序asc – alexandr 2010-07-10 18:31:35

+0

@alexandr:那有什么问题? – 2010-07-10 18:32:00

回答

1

我猜你想要返回所有的行,并且你希望有一些名字的人先按年龄排序。之后,您需要其他所有行。此查询将做到这一点:

SELECT city.name, citizen.name, citizen.age 
FROM citizen 
JOIN city ON city.id_city = citizen.id_city 
ORDER BY citizen.name <> 'some_name', citizen.age 
+0

它的工作感谢Mark Byers !!!!我现在不知道 ORDER BY citizen.name <>'varible' 再次感谢! – alexandr 2010-07-10 18:58:22

+0

好猜!我喜欢幸运符 – 2010-07-10 19:00:34

2

这是我能与(缺乏)提供的信息做到最好。

SELECT * 
FROM 1st a 
JOIN 2nd b ON a.id_city=b.id_city 
WHERE a.name = 'same' 
ORDER BY b.age ASC 

注意:请勿实际使用*作为输出列。使用实际的名字。

0
select c2.name AS CityName, 
c1.name AS CitizenName, 
c1.age AS CitizenAge 
from citizen as C1 
inner join city as C2 on C1.id_city = c2.id_city 
where c1.name = 'frank' 
order by c1.age asc 
+0

它将只输出行,其中名字是'弗兰克',但我需要所有其他 – alexandr 2010-07-10 18:40:42

+1

@alexandr:你说'你想要'具有相同名称的人随着年龄增长' 。也许你可以**编辑你的问题**来包含示例数据,然后是你期望从查询中得到的结果? – 2010-07-10 18:45:10

0

是你正在寻找真正帮助如何将参数传递给查询?在这种情况下,你的问题是='%s'。您需要删除单引号。在TSQL存储过程中,它将是= @s。 MySQL我不确定(你有两个标签),如果你使用的不是存储过程来做参数化查询,它取决于你使用的数据提供者。