Mysql 从数据库中获取项目列表
在我的数据库中,我有两个表:Mysql 从数据库中获取项目列表,mysql,sql,database,Mysql,Sql,Database,在我的数据库中,我有两个表: 1. "subjects" table: that include 2 fileds: *id, *desctiption, 2. "subSubjects" table that include 4 fileds: *id, *Desctiption, *subject_id, *department_id (primary key of departments table). 我需要返回主题列表,每个主题都包含匹配子主题列表, 有一种方法
1. "subjects" table: that include 2 fileds:
*id, *desctiption,
2. "subSubjects" table that include 4 fileds:
*id, *Desctiption, *subject_id, *department_id (primary key of departments table).
我需要返回主题列表,每个主题都包含匹配子主题列表,
有一种方法可以做到这一点,而无需使用select INDER selecet STANTIONS?
(加入或加入另一个国家)?
*我有一个类——“Subject”,其中包括一系列子主题
视图中的结果需要如下所示:
*****************************
subject * sub-subject * dep *
*****************************
sub_1 * sub sub1 * 1 *
*********************
* sub sub2 * 2 *
*****************************
sub_2 * sub sub 4 * 1 *
*****************************
sub_3 * sub sub 3 * 1 *
*********************
* sub sub 5 * 2 *
*********************
* sub sub 6 * 2 *
*****************************
从'subjects'中选择s.id、ss.description、ss.department\u id作为s
内部连接'subSubjects'作为s.id=ss.subject\u id上的ss
看一看,这将解释您需要了解的有关创建内部联接和其他类型SQL语句的基础知识。使用以下查询:
SELECT
CASE WHEN t.id = (SELECT TOP 1 id -- Sub query
FROM Subsubjects t3
WHERE t3.subject_id = t.subject_id
ORDER BY t3.id) THEN q.description
ELSE ''
END AS Subjects, t.description AS Subsubjects, t.department_id
FROM Subsubjects t
LEFT JOIN subjects q ON q.id = t.subject_id
ORDER BY t.id
它将返回预期的数据,如下所示:
*****************************
subject * sub-subject * dep *
*****************************
sub_1 * sub sub1 * 1 *
*********************
* sub sub2 * 2 *
*****************************
sub_2 * sub sub 4 * 1 *
*****************************
sub_3 * sub sub 3 * 1 *
*********************
* sub sub 5 * 2 *
*********************
* sub sub 6 * 2 *
*****************************
下面是我们如何处理sql查询的列表对象的示例:
public List<Product> GetAllProducts() //GetAllProducts() is a list-type method
{
Query = "SELECT * FROM Products";
Command = new SqlCommand(Query, Connection);
Connection.Open();
Reader = Command.ExecuteReader();
List<Product> products = new List<Product>(); //Created a list
while (Reader.Read())
{
Product product = new Product(); //Created an object from the class
product.ProductId = Convert.ToInt32(Reader["ProductID"]);
product.CategoryId = Convert.ToInt32(Reader["CategoryID"]);
product.ProductName = Reader["ProductName"].ToString();
product.Details = Reader["Details"].ToString();
product.Price = (double)Reader["Price"];
product.Stock = Convert.ToDouble(Reader["Stock"]);
products.Add(product); //Finally bind the object with the list
}
Reader.Close();
Connection.Close();
return products;
}
public List GetAllProducts()//GetAllProducts()是一个列表类型方法
{
Query=“从产品中选择*”;
Command=newsqlcommand(查询、连接);
Connection.Open();
Reader=Command.ExecuteReader();
列表产品=新建列表();//创建了一个列表
while(Reader.Read())
{
Product Product=new Product();//从类创建了一个对象
product.ProductId=Convert.ToInt32(读卡器[“ProductId]”);
product.CategoryId=Convert.ToInt32(读卡器[“CategoryId]”);
product.ProductName=Reader[“ProductName”].ToString();
product.Details=Reader[“Details”].ToString();
product.Price=(双)读卡器[“Price”];
product.Stock=Convert.ToDouble(读卡器[“Stock”]);
products.Add(product);//最后将对象与列表绑定
}
Reader.Close();
Connection.Close();
退货产品;
}
如果所有子主题始终与某个主题相关,则应尝试内部联接,
否则尝试左外连接
SELECT as Subject,
subSubjects.Description as SubSubject,
department_id as Dep
FROM subSubjects
INNER JOIN Subjects
ON Subjects.id=SubSubjects.subject_id
ORDER BY Subjects.description
添加一些样本表数据,以及预期的结果。什么是“一些样本表数据”?您想查看该视图吗?我想以最佳和最快的方式使用。我们想查看数据库中的一些数据以及您希望实现的结果视图。谢谢@Taacoo解释。(有时我只是没有耐心…)在连接之后,我得到一个带有主题id的表,将其转换为主题对象列表(每个主题都包含其中的子主题列表)shuold I to use group?更改了SQL以提供所需的数据。您可以根据需要更改除联接之外的所有列名。确保在任何列名前面加上s。或者党卫军。关于各自的表名好的,谢谢,但是我如何收集主题?我想从此表中创建列表?如果您只需要主题id,请在选择参数中键入它。我不想在表中创建所有文件,但我想将其拆分并按主题id对其进行分组。。。你明白我的问题吗?你能把答案转换成我的数据表吗?我不知道如何使用我的数据…好的。我给你一个样品。检查这个:我仍然不明白如何转换这个硬代码。。。你能帮我换算一下吗?好的。等待我给你,等等。几分钟。返回的是什么?表中有主题描述sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_sub_,您可能还没有看到它们。我如何添加图像?现在我得到了由主题id生成的表,但如何将此结果表转换为java中的主题列表?我得到了具有subject_id的行,我想收集一个subject对象中具有相同subject_id的所有行(并将它们放在这个subject对象内的列表中),有一种方法可以返回按subject_id排序但不相乘的表,比如我添加到问题中的表。。。?