[SQL] Créer une base/une table

Créer une base/une table [SQL] - SQL/NoSQL - Programmation

Marsh Posté le 30-08-2008 à 22:29:06    

Bonjour,
 
Joueur de poker, j'utilise un logiciel ("Pokertracker", nommé ici "PT" ) qui stocke les mains que je joue en ligne et me permet ensuite d'obtenir diverses stats sur ma façon de jouer/celle de mes adversaires.
Les mains sont stockées dans une base de données sql.
 
Une base contient 21 tables (par exemple les tables GAME et GAME_PLAYERS contiennent les infos les plus importantes étant donné qu'elles contiennent toutes les infos des mains que j'ai joué: nb de joueurs sur la table, cartes du tableau, historique des mises/relances etc..).
 
PT permet de faire quelques sélections dans ma grande base de données.
Exemple: la base de données contient 200.000 mains que j'ai joué sur internet et je peux ne sélectionner que celles où j'ai reçu une paire d'as comme cartes de départ.
 
C'est bien, mais insuffisant si on veut analyser finement sa façon de jouer/essayer de progresser.
 
Par exemple, c'est impossible de sélectionner "les mains où il y avait 10 joueurs à tables, j'ai reçu AsRoi, j'ai relancé et un adversaire a sur-relancé, le flop a sorti un roi et 2 petites cartes".
 
Pour analyser la façon dont je devrais jouer ces mains, il me faudrait créer une base de données plus petite ne contenant que les mains que je veux étudier.
 
J'ai donc ouvert access et j'ai essayé, sur chaque des tables de faire un:
 
CREATE TABLE game1 AS SELECT * FROM GAME;
 
Autrement dit je crée une table identique à "GAME" et ensuite sur cette table je ferai des SELECT pour ne sélectionner que les scénarios désirés.
 
Questions:
1.La syntaxe CREATE TABLE game1 AS SELECT * FROM GAME; ne fonctionne pas!
J'ai trouvé cette syntaxe sur le net, ne pratiquant que rarement le SQL.
Llorsque je veux sauver la requête, Access me donne un message d'errerr "Erreur de syntaxe dans l'instruction CREATE TABLE".
C'est pourtant la syntaxe donnée dans le didacticiel que j'avais trouvé sur le net!.
J'utilise le bouton "requêtes" d'access et je me mets en mode sql pour taper directement le code. Je m'aperçois que la fenêtre de la requête s'appelle "Requête1: Requête Sélection". C'est peut être de là que vient le pb: si je procède ainsi je ne peux faire que des SELECT mais pas de CREATE???
 
2.Si cette syntaxe fonctionnait, me suffirait il de faire la même chose pour les 21 tables et après je pourrais créer une base SQL constituée de ces 21 tables  (comment?) ?
 
Merci d'avance à ceux qui prendront le temps de m'aider!
A chaque fois que je suis venu sur ce forum j'ai reçu de très bonnes réponses à mes pb de programmation (c du VB généralement)


Message édité par Rutger le 30-08-2008 à 22:29:56
Reply

Marsh Posté le 30-08-2008 à 22:29:06   

Reply

Marsh Posté le 09-09-2008 à 23:22:11    

Bonsoir,  
 
Va faire un tour sur ce site pour apprendre la syntaxe SQL : http://sql.1keydata.com/fr/
 
La syntaxe SQL de CREATE TABLEest :
 

Code :
  1. CREATE TABLE "nom de table"
  2. ("colonne 1" "type de données pour la colonne 1",
  3. "colonne 2" "type de données pour la colonne 2",
  4. ... )


 
Pour ta première question peut tu expliquer clairement ton soucis ? j'avoue ne pas tout comprendre :) !
 
A plutard
Cvb
 

Reply

Marsh Posté le 10-09-2008 à 20:11:28    

Bonjour cvb
 
merci pour ta réponse
je ne crée pas une table ab nihilo mais à partir d'une table qui existe déjà donc je n'ai pas à déclarer les colonnes me semble t'il (?).
 
J'ouvre une base de données.
Elle contient 21 tables dont la table GAME.
 
Avec:

Code :
  1. CREATE TABLE game1 AS SELECT * FROM GAME;


ca devrait me créer une table nommée "game1" exactement similaire à la table GAME (et si ca marche je ferai un  

Code :
  1. CREATE TABLE game1 AS SELECT * FROM GAME WHERE champ1=111;


 
Pour créer cette requête, je fais (je décris tout, même si ca fait un peu "bête", mais au moins je suis sûr de ne pas oublier d'étape où j'aurais fait une erreur):
J'ouvre Access
J'ouvre ma base de données.
Je clique sur "Requêtes" et "Nouveau", "Créer une requête en mode création".
Je sélectionne la table "game", je clique sur "fermer"
Je clique sur "sql" ce qui affiche une fenêtre dans laquelle je tape directement mon code
 

Code :
  1. CREATE TABLE game1 AS SELECT * FROM GAME;


 
J'enregistre la requête et au moment de l'enregistrement j'obtiens le message d'erreur :"erreur de syntaxe dans l'instruction CREATE TABLE".
Donc je me disais que ma syntaxe est peut être bonne mais Access ne permet pas de saisir autre chose qu'une requête SELECT (et pas de CREATE), en tout cas pas de cette façon.


Message édité par Rutger le 10-09-2008 à 20:23:07
Reply

Marsh Posté le 10-09-2008 à 22:28:28    

Bonsoir,
 
La syntaxe suivante que tu post n'est pas correct ! Soit tu crée, soit tu ajouter des informations, dans une table. La syntaxe suivante est un mixe des deux, ta requetes est fausse...C'est ce que dis Access, comme n'importe quelle base de donnée à laquelle tu proposerai cette requête !  
 

Code :
  1. CREATE TABLE game1 AS SELECT * FROM GAME;


 
Si tu veux récupérer des informations, il faut utiliser SELECT, quelques exemples de requêtes ci-dessous. Tu trouvera d'autres exemples plus complexes sur le net par exemple. Regarde le site que je t'ai donné pour regarder la syntaxe correct permettant de créer une table, de récupérer des informations, ect...
 

Code :
  1. SELECT * FROM base1


Code :
  1. SELECT nom FROM base1


Code :
  1. SELECT prenom,nom FROM base1 WHERE nom=toto


Code :
  1. SELECT prenom,nom,adresse FROM base1 WHERE nom=toto AND prenom=titi


 
A plutard
CVb

Reply

Marsh Posté le 11-09-2008 à 10:06:34    

non, "create as select" fonctionne habituellement (ça crée une table contenant le résultat du select)
 
bon, par contre pas sûr qu'access reconnaisse. mais la plupart des sgbd (sql server, oracle, mysql, postgre, etc.) reconnaissent cette syntaxe

Reply

Marsh Posté le 11-09-2008 à 12:21:14    

Au temps pour moi, je ne l'avais jamais utilisé auparavant ! :jap:

Reply

Marsh Posté le 11-09-2008 à 13:23:51    

MagicBuzz a écrit :

non, "create as select" fonctionne habituellement (ça crée une table contenant le résultat du select)
 
bon, par contre pas sûr qu'access reconnaisse. mais la plupart des sgbd (sql server, oracle, mysql, postgre, etc.) reconnaissent cette syntaxe


je vais m'installer un de ces logiciels (il y en a un que vous me conseillez particulièrement?) et je vous tiens au courant!
 
:jap:

Reply

Marsh Posté le 11-09-2008 à 14:04:44    

SQL Server 2005 Express est simple à installer et puissant.
 
MySQL est pas mal aussi, tout dépend de ce que tu veux faire.
 
Oracle et PostGre sont de très bons produits aussi, mais beaucoup plus complexe à installer/maintenir.
 
SQL Server sera en tout cas le plus proche niveau syntaxique de Access puisqu'il s'agit de Microsoft aussi.

Reply

Marsh Posté le 11-09-2008 à 14:31:32    

je te conseilles de travailler sur une copie du fichier MDB, copier la table et faire du delete dedans ( http://access.developpez.com/sql/#L2.2.3 )
nouveau sgbd, familiarisation,  import des données ca va prendre du temps tout ca !


Message édité par djobidjoba le 11-09-2008 à 14:34:48
Reply

Marsh Posté le 11-09-2008 à 14:34:06    

ouais m'enfin créer des tables à coup de copier/coller et faire du ménage dedans à coup de clic droit supprimer, chuis pas sûr que la perte de temps nécessaire pour travailler proprement soit vraiment une perte de temps...

Reply

Marsh Posté le 11-09-2008 à 14:34:06   

Reply

Marsh Posté le 11-09-2008 à 15:13:41    

Même sous Access l'instruction delete ne nécessite pas d'intervention utilisateur ("clic droit supprimer" ), d'où le lien qui explique la syntaxe à respecter.
La condition du delete est l'inverse de celle du select imaginée au départ.
Après c'est possible de creer un formulaire avec un bouton pour enchainer les delete pour les 20 autres tables.
Changer de technos pour faire l'opération c'est bien , instructif et tout mais faut pouvoir faire le chemin inverse et re-importer dans un mdb dans ce cas.


Message édité par djobidjoba le 11-09-2008 à 15:18:06
Reply

Marsh Posté le 11-09-2008 à 15:24:12    

c'est justement ce que je dis.
 
travailler avec autrechose qu'access, c'est la garantie de travailler proprement, parceque j'ai pas une IHM qui me cache complètement le fonctionnement du produit qui est derrière.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed