Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1296 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Créer une base/une table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Créer une base/une table

n°1780389
Rutger
Tannhauser Gate
Posté le 30-08-2008 à 22:29:06  profilanswer
 

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
mood
Publicité
Posté le 30-08-2008 à 22:29:06  profilanswer
 

n°1784791
cvb
Posté le 09-09-2008 à 23:22:11  profilanswer
 

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
 

n°1785219
Rutger
Tannhauser Gate
Posté le 10-09-2008 à 20:11:28  profilanswer
 

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
n°1785317
cvb
Posté le 10-09-2008 à 22:28:28  profilanswer
 

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

n°1785417
MagicBuzz
Posté le 11-09-2008 à 10:06:34  profilanswer
 

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

n°1785502
cvb
Posté le 11-09-2008 à 12:21:14  profilanswer
 

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

n°1785541
Rutger
Tannhauser Gate
Posté le 11-09-2008 à 13:23:51  profilanswer
 

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:

n°1785569
MagicBuzz
Posté le 11-09-2008 à 14:04:44  profilanswer
 

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.

n°1785583
djobidjoba
Posté le 11-09-2008 à 14:31:32  profilanswer
 

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
n°1785586
MagicBuzz
Posté le 11-09-2008 à 14:34:06  profilanswer
 

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...

mood
Publicité
Posté le 11-09-2008 à 14:34:06  profilanswer
 

n°1785615
djobidjoba
Posté le 11-09-2008 à 15:13:41  profilanswer
 

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
n°1785622
MagicBuzz
Posté le 11-09-2008 à 15:24:12  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Créer une base/une table

 

Sujets relatifs
Méthode(s) de connexion SQL ?![SQL] Oubli auto_increment sur ID
editeur SQL pour AccessExecuter du php dans du SQL ?
Problème avec windev et SQLRequete SQL Datetime
Erreur création base de données[ORACLE APPLICATION BUILDER] Creer une page de login
Update de plusieurs valeurs d'une table[SQL]trié plusieur count dans une requete union
Plus de sujets relatifs à : [SQL] Créer une base/une table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR