c# - 通过特定搜索从多个表中获取记录

标签 c# mysql sql

我正在开发图书馆自动化系统。

表格

book(id,name,author,code)

student(id, name,surname,number)

lend_book(id, book_id[fk from book],student_id,lend_date,receive_case) 

{ Student_id 和 book_id 伪造 key ,receive_case 为tinyint(1) }

所以我需要一个sql查询如何使用书名、作者或代码和/或(如果用户输入它)学生姓名、姓氏或编号和/或书已收到、未收到或两种情况进行搜索。

query = "SELECT s.name, s.surname,s.number,b.name, b.code, b.author,lb.lend_date,l.delivery_date from student"+
                    "JOIN  book b ON (b.name like '%{1}%' OR b.code like '%{1}%' OR b.code like '%{1}%')" +
                    "JOIN lend_book lb ON (lb.recieve_case={2})"+
                    "WHERE (s.name like '%{0}%' OR s.surname like '%{0}%' OR s.number like '%{0}%') ;";

谢谢

最佳答案

选择 b.Id、b.Name、b.Code、s.Id、s.Name、s.Surname、s.Number、l.lend_date、l.receive_case

来自书b 左外连接 led_book l ON b.id = l.book_id 左外连接学生 s ON s.id = l.student_id

哪里 (b.名称如“%{0}%”或 b.作者如“%{1}%”或 b.代码如“%{2}%”) 和/或 (s.姓名如“%{3}%”或 s.姓氏如“%{4}%”或 s.编号如“%{5}%”) 和/或 (l.receive_case = {6} 或 {6} 为空)

如果{6}的值为1,则返回receive case =1。 如果{6}的值为0,则返回receive case = 0。 要获取这两种情况下的所有记录,{6} 的值应为 null。或者,如果 null 不适合您的情况,那么您可以采用 0/1 以外的任何数字,并将最后一个条件更改为 {6} =

关于c# - 通过特定搜索从多个表中获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43736400/

相关文章:

c# - 找不到类型或命名空间名称 'NUnit' |统一

java - Netty 使用数据库连接和查询?

php - 如何使用 Sugar API 从自定义表中获取数据

mysql - MySQL 中执行一个 JOIN + 一个 LIKE 语句更快还是执行两个 JOIN 更快?

mysql - tinyint列优化mysql

c# - 通过唯一 ID 从集合中获取项目

c# - 方法如何知道它是否在 UI 线程上运行?

sql-server-2005 - SQL选择: Using CTE as dataset for IN clause - syntax error

sql - 如何在 SQL Developer 中将 .sql 文件作为包文件打开?

c# - 从 C# winforms 读取 html