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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  BlaBla@SQL

 


Débat n°1




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  20  21  22  23  24  25
Page Précédente
Auteur Sujet :

BlaBla@SQL

n°1963176
FlorentG
Posté le 05-02-2010 à 10:15:42  profilanswer
 

C'est parti :o


Message édité par FlorentG le 05-02-2010 à 10:17:20
mood
Publicité
Posté le 05-02-2010 à 10:15:42  profilanswer
 

n°1963179
FlorentG
Posté le 05-02-2010 à 10:17:30  profilanswer
 

J'ai mis un sondage :o

n°1963181
BenO
Profil: Chercheur
Posté le 05-02-2010 à 10:17:48  profilanswer
 

premier vote \o/


---------------
Python Python Python
n°1963182
FlorentG
Posté le 05-02-2010 à 10:18:09  profilanswer
 

Merde j'avais pas voté.

n°1963183
lorill
Posté le 05-02-2010 à 10:18:24  profilanswer
 

1 partout, balle au centre.

n°1963184
Jubijub
Parce que je le VD bien
Posté le 05-02-2010 à 10:19:14  profilanswer
 

[:drapo]
 
ça peut etre intéressant :D
 
et col1, col2, col3 bien sur :o


Message édité par Jubijub le 05-02-2010 à 10:19:50

---------------
Jubi Photos : Flickr - 500px
n°1963186
Shinuza
This is unexecpected
Posté le 05-02-2010 à 10:27:11  profilanswer
 

A voté :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963189
drasche
Posté le 05-02-2010 à 10:44:11  profilanswer
 

Quel est l'âne qui a choisi SELECT * qu'on le pende par les couilles? :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963190
FlorentG
Posté le 05-02-2010 à 10:45:08  profilanswer
 

C'est BenO, le premier qui a voté :o

n°1963192
BenO
Profil: Chercheur
Posté le 05-02-2010 à 10:46:15  profilanswer
 

c'est pas bien de faire ça ? [:cerveau cupra]


---------------
Python Python Python
mood
Publicité
Posté le 05-02-2010 à 10:46:15  profilanswer
 

n°1963194
seabee
Posté le 05-02-2010 à 10:46:25  profilanswer
 

Bon ben cross-post :o

 

Table d'article avec une date de début, une date de retrait et un booléen publié ou non.

Code :
  1. t.boolean  :active        # publié ou non
  2. t.datetime :starts_at     # date de publication
  3. t.datetime :ends_at       # date de retrait


Mes requêtes types ressembleront à ça :

 
Code :
  1. SELECT col1, col2 FROM articles
  2. WHERE (starts_at IS NULL OR .starts_at < DATE.now) AND (ends_at IS NULL OR ends_at > DATE.now) AND active = true
  3. ORDER BY starts_at DESC
 

Bref, choper tous les articles actifs en cours de publication, par ordre de mise en ligne :o

 

starts_at aura TOUJOURS une valeur;
ends_at quasiment jamais de valeur;
active quasiment toujours à true;

 

J'indexe quoi et dans quel ordre ?

 

Pour l'instant je pensais à juste starts_at. Et je ne sais pas comment MySQL réagi au OR dans les conditions..
Enfin bref, si qqun a une idée. :o


Message édité par seabee le 05-02-2010 à 10:47:34
n°1963195
FlorentG
Posté le 05-02-2010 à 10:48:12  profilanswer
 

Arrêtez de foutre des NULL partout :o
 
Mettez une date à zéro par exemple, c'est moins relou.
 
Pour tout ce qui est indexage, vérifie déjà avec un EXPLAIN

n°1963198
drasche
Posté le 05-02-2010 à 10:52:49  profilanswer
 

BenO a écrit :

c'est pas bien de faire ça ? [:cerveau cupra]


C'est mieux dans le sens où le serveur doit pas deviner quels champs tu veux, tu fais potentiellement transiter moins de données sur le réseau si tu rajoutes des champs dont t'as pas forcément besoin :o
 
Bon sinon dans un registre différent, j'ai une chouette requête dont on voit qu'elle a été écrite puis maintenue par deux personnes différentes :o
 

Code :
  1. SELECT * FROM Table1, Table2, Table3
  2. WHERE Table1.id = Table2.table1id
  3. AND Table2.id = Table3.table2id
  4.  
  5. UNION
  6.  
  7. SELECT * FROM Table1
  8. INNER JOIN Table2 ON Table1.id = Table2.table1id
  9. INNER JOIN Table3 ON Table2.id = Table3.table2id


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963199
Shinuza
This is unexecpected
Posté le 05-02-2010 à 10:53:31  profilanswer
 

Cross post aussi
 
Deux tables :
 
Shows qui a une relation one to many sur Episodes , je veux récuperer tous les épisodes liés à un show dont l'airdate est superieur à date.now
 

Code :
  1. pending = session\
  2.                .query(Show.id, Show.showname, Episode.id,  Episode.season, Episode.num, Episode.title, Episode.airdate)\
  3.                .filter(Episode.show_id.in_(watched_shows))\
  4.                .filter(Show.id == Episode.show_id)\
  5.                .filter(Episode.airdate > datetime.now())


Ça me sort ça

Code :
  1. SELECT
  2.    shows.id AS shows_id,
  3.    shows.showname AS shows_showname,
  4.    episodes.id AS episodes_id,
  5.    episodes.season AS episodes_season,
  6.    episodes.num AS episodes_num,
  7.    episodes.title AS episodes_title,
  8.    episodes.airdate AS episodes_airdate
  9. FROM
  10.    shows, episodes
  11. WHERE
  12.    episodes.show_id IN (?, ?, ?, ?)
  13. AND shows.id = episodes.show_id
  14. AND episodes.airdate > ?


 
Hors c'est super lent, je vais retenter un explain mais je sais pas lire le résultat :o
Mais au pif si je dois indexer il faut que je le fasse sur quel column et pourquoi?
 
:jap:


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963200
seabee
Posté le 05-02-2010 à 10:54:28  profilanswer
 

FlorentG a écrit :

Arrêtez de foutre des NULL partout :o
 
Mettez une date à zéro par exemple, c'est moins relou.
 
Pour tout ce qui est indexage, vérifie déjà avec un EXPLAIN


0 pour une colonne DateTime, ça va pas mettre le boxon ?
Quelle sera la différence avec NULL ?

n°1963204
seabee
Posté le 05-02-2010 à 11:00:06  profilanswer
 

Shinuza a écrit :

Cross post aussi
 
Deux tables :
 
Shows qui a une relation one to many sur Episodes , je veux récuperer tous les épisodes liés à un show dont l'airdate est superieur à date.now
 

Code :
  1. pending = session\
  2.                .query(Show.id, Show.showname, Episode.id,  Episode.season, Episode.num, Episode.title, Episode.airdate)\
  3.                .filter(Episode.show_id.in_(watched_shows))\
  4.                .filter(Show.id == Episode.show_id)\
  5.                .filter(Episode.airdate > datetime.now())


Ça me sort ça

Code :
  1. SELECT
  2.    shows.id AS shows_id,
  3.    shows.showname AS shows_showname,
  4.    episodes.id AS episodes_id,
  5.    episodes.season AS episodes_season,
  6.    episodes.num AS episodes_num,
  7.    episodes.title AS episodes_title,
  8.    episodes.airdate AS episodes_airdate
  9. FROM
  10.    shows, episodes
  11. WHERE
  12.    episodes.show_id IN (?, ?, ?, ?)
  13. AND shows.id = episodes.show_id
  14. AND episodes.airdate > ?


 
Hors c'est super lent, je vais retenter un explain mais je sais pas lire le résultat :o
Mais au pif si je dois indexer il faut que je le fasse sur quel column et pourquoi?
 
:jap:


Fais un index multi colonne (show_id, airdate) qui te servira pour ta requête et toutes les jointures sur les show (left-most machin)
Et un autre sur airdate pour les cas ou tu auras à trier par airdate sans jointure.
ça devrait poutrer sa mère.

n°1963205
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 11:02:04  profilanswer
 

Quelqu'un sait quelle est la taille limite de set quand on fait un WHERE foo IN set? Pour postgres?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963206
FlorentG
Posté le 05-02-2010 à 11:02:06  profilanswer
 

seabee a écrit :


0 pour une colonne DateTime, ça va pas mettre le boxon ?
Quelle sera la différence avec NULL ?


Enfin un 0000-00-00 00:00:00, du coup pas besoin de tests pour voir si c'est NULL (requête simplifiée). Et une colonne nullable prend plus de place.

n°1963207
Shinuza
This is unexecpected
Posté le 05-02-2010 à 11:09:21  profilanswer
 

seabee a écrit :


Fais un index multi colonne (show_id, airdate) qui te servira pour ta requête et toutes les jointures sur les show (left-most machin)
Et un autre sur airdate pour les cas ou tu auras à trier par airdate sans jointure.
ça devrait poutrer sa mère.


Nan mais c'est juste instantané quoi [:pingouino]

 

Merci [:prosterne]

 

Need : Bouquin pour comprendre toute cette merde


Message édité par Shinuza le 05-02-2010 à 11:10:03

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963209
drasche
Posté le 05-02-2010 à 11:17:20  profilanswer
 

FlorentG a écrit :

Enfin un 0000-00-00 00:00:00, du coup pas besoin de tests pour voir si c'est NULL (requête simplifiée). Et une colonne nullable prend plus de place.


Et si tu indexes ce champ, ça bouffe de la place inutilement dans l'index [:bien]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963215
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 11:25:57  profilanswer
 

drasche a écrit :


Et si tu indexes ce champ, ça bouffe de la place inutilement dans l'index [:bien]


Ouais enfin sauf si ta table a des dimensions gargantuesques osef :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963218
drasche
Posté le 05-02-2010 à 11:27:43  profilanswer
 

masklinn a écrit :

Ouais enfin sauf si ta table a des dimensions gargantuesques osef :o


Ne pas prévoir, c'est déjà gémir.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1963221
Shinuza
This is unexecpected
Posté le 05-02-2010 à 11:30:35  profilanswer
 

SELECT count(*) FROM episodes
// 866552


 

SELECT count(*) FROM shows
// 17881


 

SELECT [...] AND episodes.airdate > '2010-02-05 11:18:16.243000'
// Query executed within 3171ms


 
J'ajoute mes indexes
 

SELECT [...] AND episodes.airdate > '2010-02-05 11:18:16.243000'
// Query executed within 78ms


 
Wait what? [:cerveau lent]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963225
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 11:37:54  profilanswer
 

Shinuza a écrit :

SELECT count(*) FROM episodes
// 866552


 

SELECT count(*) FROM shows
// 17881


 

SELECT [...] AND episodes.airdate > '2010-02-05 11:18:16.243000'
// Query executed within 3171ms


 
J'ajoute mes indexes
 

SELECT [...] AND episodes.airdate > '2010-02-05 11:18:16.243000'
// Query executed within 78ms


 
Wait what? [:cerveau lent]


et tant que t'y es, remplace donc ton  

Code :
  1. FROM
  2.    shows, episodes
  3. WHERE
  4.    episodes.show_id IN (?, ?, ?, ?)
  5. AND shows.id = episodes.show_id
  6. AND episodes.airdate > ?


par

Code :
  1. FROM
  2.    shows INNER JOIN episodes ON shows.id = episodes.show_id
  3. WHERE
  4.    episodes.show_id IN (?, ?, ?, ?)
  5. AND episodes.airdate > ?


je ne le répeterais jamais assez : les jointures par WHERE, c'est le mal


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963228
lorill
Posté le 05-02-2010 à 11:42:07  profilanswer
 

Harkonnen a écrit :


je ne le répeterais jamais assez : les jointures par WHERE, c'est le mal


explique

n°1963231
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 11:49:17  profilanswer
 

Harkonnen a écrit :


et tant que t'y es, remplace donc ton  

Code :
  1. FROM
  2.    shows, episodes
  3. WHERE
  4.    episodes.show_id IN (?, ?, ?, ?)
  5. AND shows.id = episodes.show_id
  6. AND episodes.airdate > ?


par

Code :
  1. FROM
  2.    shows INNER JOIN episodes ON shows.id = episodes.show_id
  3. WHERE
  4.    episodes.show_id IN (?, ?, ?, ?)
  5. AND episodes.airdate > ?


je ne le répeterais jamais assez : les jointures par WHERE, c'est le mal


C'est l'ORM qui génère son truc :o
 
Mais pendant que t'es là, on me suggère à la place de  

Code :
  1. SELECT foo FROM mytable WHERE bar IN (1, 2, 3, 4, 5, ..., 999, 1000)


de faire un "join sur un values pattern".
 
J'ai trouvé VALUES dans la doc de postgres, mais je vois pas quel join faire, halp?


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963232
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 11:49:17  profilanswer
 


oh je me prends régulièrement la tronche ici avec plein de monde à ce sujet :D
le post le plus récent à ce sujet étant celui ci : http://forum.hardware.fr/hfr/Progr [...] 6363_1.htm
 
mais bon, si tu cherches, y'en a plein d'autres, y compris en MP [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963235
skeye
Posté le 05-02-2010 à 11:53:41  profilanswer
 

[:drapo] - je reviendrai lire les questions quand j'aurai le temps.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1963237
lorill
Posté le 05-02-2010 à 11:56:05  profilanswer
 

Mouais, rien de bien convaincant, donc.

Message cité 2 fois
Message édité par lorill le 05-02-2010 à 12:01:12
n°1963238
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 11:57:02  profilanswer
 

masklinn a écrit :


C'est l'ORM qui génère son truc :o
 
Mais pendant que t'es là, on me suggère à la place de  

Code :
  1. SELECT foo FROM mytable WHERE bar IN (1, 2, 3, 4, 5, ..., 999, 1000)


de faire un "join sur un values pattern".
 
J'ai trouvé VALUES dans la doc de postgres, mais je vois pas quel join faire, halp?


ben tu génères une table temporaire avec tes 1000 valeurs, que tu appellera Tmp par exemple et un champ "bar"
puis ensuite tu fais ta jointure :
 

Code :
  1. SELECT foo FROM mytable INNER JOIN Tmp ON mytable.foo = Tmp.bar



---------------
J'ai un string dans l'array (Paris Hilton)
n°1963241
skeye
Posté le 05-02-2010 à 11:59:21  profilanswer
 

lorill a écrit :

Mouais, rien de bien convainquant, donc.


Non, il fait son intégriste.:o


---------------
Can't buy what I want because it's free -
n°1963242
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 11:59:58  profilanswer
 

Harkonnen a écrit :


ben tu génères une table temporaire avec tes 1000 valeurs


Oui mais non, justement, apparemement je peux faire ça mieux avec http://www.postgresql.org/docs/8.4 [...] alues.html :o

 

edit: mmm d'après la page d'après ça pourrait donner:

Code :
  1. SELECT foo FROM mytable INNER JOIN (VALUES mes_valeurs) AS tmp (bar) ON mytable.foo = tmp.bar

Message cité 2 fois
Message édité par masklinn le 05-02-2010 à 12:02:24

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963243
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-02-2010 à 12:01:02  profilanswer
 

lorill a écrit :

Mouais, rien de bien convainquant, donc.


du tout... sauf à mélanger critères de jointure et critère de filtre dans la même requête, multipliant ainsi les risques de CROSS JOIN (et donc de mise en croix du serveur aussi) en cas de suppression par mégarde d'un ou plusieurs critères de jointure là où on voulait supprimer un filtre... :sarcastic:
moi je dis ça, je dis rien hein, ça arrive bien plus souvent qu'on ne le croit [:cosmoschtroumpf]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1963244
skeye
Posté le 05-02-2010 à 12:01:26  profilanswer
 

masklinn a écrit :


Oui mais non, justement, apparemement je peux faire ça mieux avec http://www.postgresql.org/docs/8.4 [...] alues.html :o


tiens, l'array() de php en sql.[:doc petrus]


---------------
Can't buy what I want because it's free -
n°1963245
lorill
Posté le 05-02-2010 à 12:02:13  profilanswer
 

Harkonnen a écrit :

en cas de suppression par mégarde d'un ou plusieurs critères de jointure là où on voulait supprimer un filtre...  


 
ouais. Et dans ton code, si on vire des lignes sans réfléchir, ca peut aussi casser des choses.
oh la la.

n°1963247
skeye
Posté le 05-02-2010 à 12:02:54  profilanswer
 

Harkonnen a écrit :


du tout... sauf à mélanger critères de jointure et critère de filtre dans la même requête, multipliant ainsi les risques de CROSS JOIN (et donc de mise en croix du serveur aussi) en cas de suppression par mégarde d'un ou plusieurs critères de jointure là où on voulait supprimer un filtre... :sarcastic:
moi je dis ça, je dis rien hein, ça arrive bien plus souvent qu'on ne le croit [:cosmoschtroumpf]

 

Utiliser JOIN c'est juste une question de bonnes pratiques/lisibilité, tes réactions sont toujours excessives.:o

Message cité 1 fois
Message édité par skeye le 05-02-2010 à 12:03:10

---------------
Can't buy what I want because it's free -
n°1963250
KangOl
Profil : pointeur
Posté le 05-02-2010 à 12:04:44  profilanswer
 

skeye a écrit :

[:drapo] - je reviendrai lire les questions quand j'aurai le temps.[:petrus75]


pareil


---------------
Nos estans firs di nosse pitite patreye...
n°1963252
masklinn
í dag viðrar vel til loftárása
Posté le 05-02-2010 à 12:07:12  profilanswer
 

skeye a écrit :


tiens, l'array() de php en sql.[:doc petrus]


Bah c'est pas mal pour créer une table temporaire OTF, et ça fait partie du standard en plus :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1963253
Shinuza
This is unexecpected
Posté le 05-02-2010 à 12:07:50  profilanswer
 

masklinn a écrit :


C'est l'ORM qui génère son truc :o

Ça doit pouvoir s'arranger : SQLAlchemy. Ça devrait donner un truc du genre :

 
Code :
  1. pending = session\
  2.          .query(Show.id, Show.showname, Episode.id,  Episode.season, Episode.num, Episode.title, Episode.airdate)\
  3.          .select_from(join(Show, Episode, Show.id==Episode.show_id))\
  4.          .filter(Episode.show_id.in_(watched_shows))\
  5.          .filter(Episode.airdate > datetime.now())
 

Edith :

 
Code :
  1. SELECT
  2.    shows.id AS shows_id,
  3.    shows.showname AS shows_showname,
  4.    episodes.id AS episodes_id,
  5.    episodes.season AS episodes_season,
  6.    episodes.num AS episodes_num,
  7.    episodes.title AS episodes_title,
  8.    episodes.airdate AS episodes_airdate
  9. FROM
  10.    shows JOIN episodes ON shows.id = episodes.show_id
  11. WHERE
  12.    episodes.show_id IN (?, ?, ?, ?)
  13. AND
  14.    episodes.airdate > ?
 

[noob]

 

C'est quoi inner/outer join?

Message cité 2 fois
Message édité par Shinuza le 05-02-2010 à 12:10:56

---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
n°1963257
skeye
Posté le 05-02-2010 à 12:16:32  profilanswer
 

Shinuza a écrit :

[noob]
 
C'est quoi inner/outer join?


 
Outer retourne les enregistrements d'un table même s'ils n'ont pas de correspondance dans l'autre.
 
ça permet de faire des jointures externes pour remplacer des sous-requêtes couteuses, en ajoutant des clauses where qui ont l'air stupides :
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3.     LEFT OUTER JOIN ins_adm_etp iae2 ON
  4.        (iae2.cod_ind = i.cod_ind
  5.            AND iae2.cod_anu = 2008
  6.            AND iae2.eta_iae = 'E'
  7.            AND iae2.cod_cmp IN (600, 700, 420, 400)
  8.        )
  9. WHERE iae.eta_iae = 'E'
  10. AND iae.cod_cmp IN (600, 700, 420, 400)
  11. AND iae.cod_anu IN (2007, 2006, 2005)
  12. AND iae2.cod_ind IS NULL;


 
au lieu de  
 

Code :
  1. SELECT count(i.cod_ind)
  2. FROM individu i JOIN ins_adm_etp iae ON (iae.cod_ind = i.cod_ind)
  3. WHERE iae.eta_iae = 'E'
  4. AND iae.cod_cmp IN (600, 700, 420, 400)
  5. AND iae.cod_anu IN (2007, 2006, 2005)
  6. AND NOT EXISTS (
  7.    SELECT 1
  8.    FROM individu i2 JOIN ins_adm_etp iae2 ON (iae2.cod_ind = i2.cod_ind)
  9.    WHERE iae2.cod_anu = 2008
  10.    AND iae2.eta_iae = 'E'
  11.    AND iae2.cod_cmp IN (600, 700, 420, 400)
  12.    AND i.cod_ind = i2.cod_ind
  13.    );

Message cité 1 fois
Message édité par skeye le 05-02-2010 à 12:22:47

---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  20  21  22  23  24  25
Page Précédente

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

  BlaBla@SQL

 

Sujets relatifs
Requete SQL de selection complexe[SQL SERVER] Ajout d'une colonne en PS...mais inutilisable
[ODBC] DSN pour se connecter à une base SQL[PDO/SQL] Aide selection et classement (JOIN ??)
Problème conditions requete SQLSQL/PHP BDD de réservation de chambres
Jointure 'LIKE' SQL => BOtable SQL Ajouter une colonne au lieu de creer une nouvelle table
Requête SQL complexe 
Plus de sujets relatifs à : BlaBla@SQL


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