Bonjour,
En local, la requête suivante marche bien :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
Sur le serveur, j'ai des problèmes...
Testé sous phpMyAdmin, mySQL me renvoie des insanités :
-----
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
-----
J'ai essayé d'introduire la requête en ajoutant l'option :
-----
SET OPTION SQL_BIG_SELECTS=1;
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
En local, ça ne marche plus !
J'ai essayé d'optimiser avec des LEFT JOIN
(ça commence à être compliqué pour moi !)
avec la requête :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
LEFT JOIN
verses as e1,
verses as e2
ON
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
WHERE
e0.e_id=1
AND e1.e_id=2
AND e2.e_id=3
AND e0.book='SF02'
ORDER BY book, chapter, verse
-----
Et j'ai une gentille remarque de mySQL :
-----
#1064 - You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'LEFT JOIN verses AS e1, verses AS e2 ON AND e0.book = e1.book
-----
D'accord, ma doc date un peu ! Promis, je charge la nouvelle !
Le nombre de tables à croiser est variables, selon le nombre de langues
demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
La requête est écrite à la volée.
Peut-on utiliser des alias dans un join ?
Comment puis-je optimiser cette requête pour que mon hébergeur ne me
fasse plus des remarques désobligeantes ?
Merci à vous pour vos réponses.
Vincent
Bonjour,
En local, la requête suivante marche bien :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
Sur le serveur, j'ai des problèmes...
Testé sous phpMyAdmin, mySQL me renvoie des insanités :
-----
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
-----
J'ai essayé d'introduire la requête en ajoutant l'option :
-----
SET OPTION SQL_BIG_SELECTS=1;
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
En local, ça ne marche plus !
J'ai essayé d'optimiser avec des LEFT JOIN
(ça commence à être compliqué pour moi !)
avec la requête :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
LEFT JOIN
verses as e1,
verses as e2
ON
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
WHERE
e0.e_id=1
AND e1.e_id=2
AND e2.e_id=3
AND e0.book='SF02'
ORDER BY book, chapter, verse
-----
Et j'ai une gentille remarque de mySQL :
-----
#1064 - You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'LEFT JOIN verses AS e1, verses AS e2 ON AND e0.book = e1.book
-----
D'accord, ma doc date un peu ! Promis, je charge la nouvelle !
Le nombre de tables à croiser est variables, selon le nombre de langues
demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
La requête est écrite à la volée.
Peut-on utiliser des alias dans un join ?
Comment puis-je optimiser cette requête pour que mon hébergeur ne me
fasse plus des remarques désobligeantes ?
Merci à vous pour vos réponses.
Vincent
Bonjour,
En local, la requête suivante marche bien :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
Sur le serveur, j'ai des problèmes...
Testé sous phpMyAdmin, mySQL me renvoie des insanités :
-----
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
-----
J'ai essayé d'introduire la requête en ajoutant l'option :
-----
SET OPTION SQL_BIG_SELECTS=1;
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
verses as e1,
verses as e2
WHERE
e0.e_id=1
AND e0.book='SF02'
AND e1.e_id=2
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e2.e_id=3
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
ORDER BY book, chapter, verse
-----
En local, ça ne marche plus !
J'ai essayé d'optimiser avec des LEFT JOIN
(ça commence à être compliqué pour moi !)
avec la requête :
-----
SELECT
e0.book as book,
e0.chapter as chapter,
e0.verse as verse,
e0.txt as t0,
e0.note as n0,
e1.txt as t1,
e1.note as n1,
e2.txt as t2,
e2.note as n2
FROM
verses as e0,
LEFT JOIN
verses as e1,
verses as e2
ON
AND e0.booká.book
AND e0.chapterá.chapter
AND e0.verseá.verse
AND e0.bookâ.book
AND e0.chapterâ.chapter
AND e0.verseâ.verse
WHERE
e0.e_id=1
AND e1.e_id=2
AND e2.e_id=3
AND e0.book='SF02'
ORDER BY book, chapter, verse
-----
Et j'ai une gentille remarque de mySQL :
-----
#1064 - You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'LEFT JOIN verses AS e1, verses AS e2 ON AND e0.book = e1.book
-----
D'accord, ma doc date un peu ! Promis, je charge la nouvelle !
Le nombre de tables à croiser est variables, selon le nombre de langues
demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
La requête est écrite à la volée.
Peut-on utiliser des alias dans un join ?
Comment puis-je optimiser cette requête pour que mon hébergeur ne me
fasse plus des remarques désobligeantes ?
Merci à vous pour vos réponses.
Vincent
produits cartésiens
AMHA, je pense qu'une petite révision s'impose:
http://sqlpro.developpez.com/SQL_AZ_3.html
>
> Le nombre de tables à croiser est variables, selon le nombre de langues
> demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
> La requête est écrite à la volée.
AMHA, c'est la conception même de la table qui est à revoir !
> Peut-on utiliser des alias dans un join ?
Oui
> Comment puis-je optimiser cette requête pour que mon hébergeur ne me
> fasse plus des remarques désobligeantes ?
J'optimiserai d'abord le modèle de données...
> Merci à vous pour vos réponses.
Une dernière chose que j'ai déjà dite ici (ainsi que d'autres
contributeurs), n'hésitez pas à donner les éléments suivants qui
permettent de mieux comprendre le pb et donc d'y apporter un meilleure
réponse :
_ la description de la table
_ la description de ce que vous voulez (langage naturel, requete)
_ un jeu d'essai
produits cartésiens
AMHA, je pense qu'une petite révision s'impose:
http://sqlpro.developpez.com/SQL_AZ_3.html
>
> Le nombre de tables à croiser est variables, selon le nombre de langues
> demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
> La requête est écrite à la volée.
AMHA, c'est la conception même de la table qui est à revoir !
> Peut-on utiliser des alias dans un join ?
Oui
> Comment puis-je optimiser cette requête pour que mon hébergeur ne me
> fasse plus des remarques désobligeantes ?
J'optimiserai d'abord le modèle de données...
> Merci à vous pour vos réponses.
Une dernière chose que j'ai déjà dite ici (ainsi que d'autres
contributeurs), n'hésitez pas à donner les éléments suivants qui
permettent de mieux comprendre le pb et donc d'y apporter un meilleure
réponse :
_ la description de la table
_ la description de ce que vous voulez (langage naturel, requete)
_ un jeu d'essai
produits cartésiens
AMHA, je pense qu'une petite révision s'impose:
http://sqlpro.developpez.com/SQL_AZ_3.html
>
> Le nombre de tables à croiser est variables, selon le nombre de langues
> demndées (ça s'appelle une polyglote) : 2 (e0, e1) 3 (e0,e1,e2) etc...
> La requête est écrite à la volée.
AMHA, c'est la conception même de la table qui est à revoir !
> Peut-on utiliser des alias dans un join ?
Oui
> Comment puis-je optimiser cette requête pour que mon hébergeur ne me
> fasse plus des remarques désobligeantes ?
J'optimiserai d'abord le modèle de données...
> Merci à vous pour vos réponses.
Une dernière chose que j'ai déjà dite ici (ainsi que d'autres
contributeurs), n'hésitez pas à donner les éléments suivants qui
permettent de mieux comprendre le pb et donc d'y apporter un meilleure
réponse :
_ la description de la table
_ la description de ce que vous voulez (langage naturel, requete)
_ un jeu d'essai
SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
In article <40deab86$0$14846$,
"Ph. B." wrote:SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
J'ai testé (et fait le code php qui génère la requête ). Ça marche très
bien en local. Propre ! Merci.
Mais le serveur me renvoit toujours ses petites phrases assasines (sous
phpMyAdmin, et une exception dans mon code) :
---
requête SQL :
SELECT e0 .book AS book ,e0 .chapter AS chapter ,e0 .verse AS verse ,e0
.txt AS t0 ,e0 .note AS n0 ,e1 .txt AS t1 ,e1 .note AS n1 ,e2 .txt AS t2
,e2 .note AS n2
FROM verses AS e0
INNER JOIN verses AS e1 ON (e0 .book á .book AND e0 .chapter á
.chapter AND e0 .verse á .verse )
INNER JOIN verses AS e2 ON (e0 .book â .book AND e0 .chapter â
.chapter AND e0 .verse â .verse )
WHERE e0 .e_id ND e1 .e_id *ND e2 .e_id :ND e0 .book ='SF01'
ORDER BY book ,chapter ,verse
LIMIT 0,30
MySQL a répondu:
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
---
si j'utilise cette option, le serveur s'octroie le droit d'avorter ?
C'est ce que j'avais cru comprendre dans ma précédente doc.
Si je mets dans la clause WHERE e1.book='SF02' plutot que
e0.book='SF02', on limite le nombre de lignes dans les tables
intermédiaire ?
Un petit coup d'oeil sur www.ifrat.net?uf=springs&um=P vous donnera une
idée de ce que je cherche.
Merci pour vos suggestions ...
Vincent
In article <40deab86$0$14846$626a14ce@news.free.fr>,
"Ph. B." <philippe.boucault@voila_N_O.S_P_A_M_.fr> wrote:
SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
J'ai testé (et fait le code php qui génère la requête ). Ça marche très
bien en local. Propre ! Merci.
Mais le serveur me renvoit toujours ses petites phrases assasines (sous
phpMyAdmin, et une exception dans mon code) :
---
requête SQL :
SELECT e0 .book AS book ,e0 .chapter AS chapter ,e0 .verse AS verse ,e0
.txt AS t0 ,e0 .note AS n0 ,e1 .txt AS t1 ,e1 .note AS n1 ,e2 .txt AS t2
,e2 .note AS n2
FROM verses AS e0
INNER JOIN verses AS e1 ON (e0 .book á .book AND e0 .chapter á
.chapter AND e0 .verse á .verse )
INNER JOIN verses AS e2 ON (e0 .book â .book AND e0 .chapter â
.chapter AND e0 .verse â .verse )
WHERE e0 .e_id ND e1 .e_id *ND e2 .e_id :ND e0 .book ='SF01'
ORDER BY book ,chapter ,verse
LIMIT 0,30
MySQL a répondu:
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
---
si j'utilise cette option, le serveur s'octroie le droit d'avorter ?
C'est ce que j'avais cru comprendre dans ma précédente doc.
Si je mets dans la clause WHERE e1.book='SF02' plutot que
e0.book='SF02', on limite le nombre de lignes dans les tables
intermédiaire ?
Un petit coup d'oeil sur www.ifrat.net?uf=springs&um=P vous donnera une
idée de ce que je cherche.
Merci pour vos suggestions ...
Vincent
In article <40deab86$0$14846$,
"Ph. B." wrote:SELECT
e0.book as book, e0.chapter as chapter, e0.verse as verse,
e0.txt as t0, e0.note as n0,
e1.txt as t1, e1.note as n1, e2.txt as t2, e2.note as n2
FROM verses AS e0
INNER JOIN verses AS e1
ON (e0.book = e1.book AND
e0.chapter = e1.chapter AND
e0.verse = e1.verse)
INNER JOIN verses AS e2
ON (e0.book = e2.book AND
e0.chapter = e2.chapter AND
e0.verse = e2.verse)
WHERE e0.e_id = 1
AND e0.book = 'SF02'
AND e1.e_id = 2
AND e2.e_id = 3
ORDER BY book, chapter, verse
J'ai testé (et fait le code php qui génère la requête ). Ça marche très
bien en local. Propre ! Merci.
Mais le serveur me renvoit toujours ses petites phrases assasines (sous
phpMyAdmin, et une exception dans mon code) :
---
requête SQL :
SELECT e0 .book AS book ,e0 .chapter AS chapter ,e0 .verse AS verse ,e0
.txt AS t0 ,e0 .note AS n0 ,e1 .txt AS t1 ,e1 .note AS n1 ,e2 .txt AS t2
,e2 .note AS n2
FROM verses AS e0
INNER JOIN verses AS e1 ON (e0 .book á .book AND e0 .chapter á
.chapter AND e0 .verse á .verse )
INNER JOIN verses AS e2 ON (e0 .book â .book AND e0 .chapter â
.chapter AND e0 .verse â .verse )
WHERE e0 .e_id ND e1 .e_id *ND e2 .e_id :ND e0 .book ='SF01'
ORDER BY book ,chapter ,verse
LIMIT 0,30
MySQL a répondu:
The SELECT would examine too many records and probably take a very long
time. Check your WHERE and use SET OPTION SQL_BIG_SELECTS=1 if the
SELECT is ok
---
si j'utilise cette option, le serveur s'octroie le droit d'avorter ?
C'est ce que j'avais cru comprendre dans ma précédente doc.
Si je mets dans la clause WHERE e1.book='SF02' plutot que
e0.book='SF02', on limite le nombre de lignes dans les tables
intermédiaire ?
Un petit coup d'oeil sur www.ifrat.net?uf=springs&um=P vous donnera une
idée de ce que je cherche.
Merci pour vos suggestions ...
Vincent