Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
193 views
in Technique[技术] by (71.8m points)

sql - Query with double joins

My entities are: Characters - Stats - Cards

The relationship between then is simple:

Characters have one-to-one for Stats

Characters have one-to-many for Cards

The expected query result is :

card.id, character.name, characters.thumbnail, characters.type, stats.overall

P.S: Cards and Stats have not direct relation, but Characters have a stat_id column

Resuming

How it's possible to in a single query achieve the expected result?

My attempts:

SELECT 
    cards.id, characters.thumbnail, characters.type, characters.name
FROM 
    cards
INNER JOIN 
    characters 
ON cards.character_id=characters.id

Result

cards.id, characters.thumbnail, characters.type, characters.name

Attempt to get stats.overall:

SELECT 
    cards.id, characters.thumbnail, characters.type, characters.name, stats.overall
FROM 
    cards, characters
INNER JOIN 
    characters 
ON cards.character_id=characters.id
INNER JOIN 
    stats 
ON characters.stat_id=stats.id

Result

error: table name "characters" specified more than once

question from:https://stackoverflow.com/questions/65602938/query-with-double-joins

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

you are joining twice to characters table , please avoid using implicit joins ( using , to join tables ) , always use explicit join :

SELECT
    cards.id
    , characters.thumbnail
    , characters.type
    , characters.name
    , stats.overall
FROM
    cards
    INNER JOIN characters
        ON cards.character_id = characters.id
    INNER JOIN stats
        ON characters.stat_id = stats.id

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...