Entrées de sélection SQL dans une autre table liée par des clés étrangères

J'ai repensé à ma structure de base de données pour utiliser les Clés PRIMAIRES et ÉTRANGÈRES pour relier les entrées dans mes 3 tables, et je vais avoir des problèmes en essayant d'écrire des requêtes pour sélectionner des données dans une table de données à une autre table. Voici un exemple de mes 3 instructions CREATE TABLE:

CREATE TABLE IF NOT EXISTS players (
    id INT(10) NOT NULL AUTO_INCREMENT,
    username VARCHAR(16) NOT NULL, 
    uuid VARCHAR(200) NOT NULL DEFAULT 0,
    joined TIMESTAMP DEFAULT 0,
    last_seen TIMESTAMP DEFAULT 0,
    PRIMARY KEY (id)
);

/*      ^
    One |
       To
        | One
        v
*/

CREATE TABLE IF NOT EXISTS accounts (
    id INT(10) NOT NULL AUTO_INCREMENT,
    account_id INT(10) NOT NULL,
    pass_hash VARCHAR(200) NOT NULL, 
    pass_salt VARCHAR(200) NOT NULL, 
    created BIGINT DEFAULT 0,
    last_log_on BIGINT DEFAULT 0,
    PRIMARY KEY (id),
    FOREIGN KEY (account_id) REFERENCES players(id) ON DELETE CASCADE
) ENGINE=MyISAM;

/*      ^
    One |
       To
        | Many
        v
*/

CREATE TABLE IF NOT EXISTS purchases (
    id INT(10) NOT NULL AUTO_INCREMENT,
    account_id INT(10) NOT NULL,
    status VARCHAR(20) NOT NULL, 
    item INT NOT NULL, 
    price DOUBLE DEFAULT 0,
    description VARCHAR(200) NOT NULL,
    buyer_name VARCHAR(200) NOT NULL,
    buyer_email VARCHAR(200) NOT NULL,
    transaction_id VARCHAR(200) NOT NULL,
    payment_type VARCHAR(20) NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (account_id) REFERENCES accounts(account_id) ON DELETE CASCADE
) ENGINE=MyISAM;

Dire par exemple, je veux sélectionner tous les noms des utilisateurs qui ont acheté quelque chose de plus grand que $30. Tous les noms d'utilisateurs sont stockés dans les joueurs de la table, qui est liée à la comptabilité de la table et qui est liée à la table des achats. Est-ce ce la meilleure manière de la conception de cette base de données relationnelle? Si oui, comment pourrais-je exécuter des requêtes similaires à l'exemple ci-dessus?

J'ai été en mesure d'obtenir la totalité d'un des utilisateurs de l'historique d'achat compte tenu de leur nom d'utilisateur, mais je l'ai fait avec 2 sous-requêtes... Arriver que les données devraient être plus facile que ça!
Voici la requête SELECT, j'ai couru pour obtenir tout d'un achat de joueurs de données:

SELECT * 
FROM purchases
WHERE account_id = (SELECT id FROM accounts WHERE account_id = (SELECT id FROM players WHERE username = 'username'));

Aussi, lorsque je tente de faire des références à d'autres tables à l'aide de quelque chose comme " les joueurs.nom d'utilisateur', j'obtiens un message d'erreur indiquant que la colonne n'existe pas...

J'apprécie toute l'aide! Merci!

source d'informationauteur Jon McPherson