sql >> データベース >  >> RDS >> Mysql

MySqlデータベース構造:単一の列と異なる値に基づく検索

    これを試してください:

    create table City
        (
         Id int,
         Name varchar(50)
        );
    
        insert into City (Id, Name) 
        VALUES 
        (1, 'Toronto'), 
        (2, 'Chicago')
    
        create table Libraries(
        Id int,
        Name varchar(50),
        CityId int
        );
    
        insert into Libraries (Id, Name, CityId) 
        VALUES 
        (1, 'Toronto Library 1', 1),
        (2, 'Toronto Library 2', 1),
        (3, 'Chicago Library 1', 2),
        (4, 'Chicago Library 2', 2)
    
        create table Books(
        Id int,
        Isbn varchar(12),
        LibraryId int
        );
    
        insert into Books (Id, Isbn, LibraryId) 
        Values
        (1, '1234567891', 1),
        (2, '13344555', 1),
        (3, 'x123sada', 1),
        (4, 'xasdsadas', 2),
        (5, 'axxzksda', 2)
    
        select DISTINCT b.Name 
        from Books a
        inner join Libraries b
        on a.LibraryId = b.Id
        where Isbn in ('1234567891', '13344555')
        and b.CityId = 1
    

    編集:または4NF:

    create table City
    (
     Id int,
     Name varchar(50)
    );
    
    insert into City (Id, Name) 
    VALUES 
    (1, 'Toronto'), 
    (2, 'Chicago')
    
    create table Libraries(
    Id int,
    Name varchar(50),
    CityId int
    );
    
    insert into Libraries (Id, Name, CityId) 
    VALUES 
    (1, 'Toronto Library 1', 1),
    (2, 'Toronto Library 2', 1),
    (3, 'Chicago Library 1', 2),
    (4, 'Chicago Library 2', 2)
    
    create table Books(
    Id int,
    Isbn varchar(12),
    );
    
    insert into Books (Id, Isbn) 
    Values
    (1, '1234567891'),
    (2, '13344555'),
    (3, 'x123sada'),
    (4, 'xasdsadas'),
    (5, 'axxzksda')
    
    create table LibraryBooks
    (
    LibraryId int,
    BookId int
    );
    
    insert into LibraryBooks (LibraryId, BookId)
    VALUES
    (1, 1),
    (1, 2),
    (3, 1),
    (2, 4),
    (5, 2)
    
    select DISTINCT c.Name
    from Books a
    inner join LibraryBooks b
    on a.Id = b.BookId
    inner join Libraries c on
    c.Id = b.LibraryId
    where Isbn in ('1234567891', '13344555')
    and c.CityId = 1
    


    1. ローカルのTIME_STAMPをUTC時間に変換します

    2. SQLServerカーソルで複数の値を取得する

    3. アラビア語をサポートするようにMysqlデータベースを作成するにはどうすればよいですか?

    4. Oracleで英数字のみを含む行を返す2つの方法