29. juli 2004 - 12:37Der er
33 kommentarer og 1 løsning
Hvordan opretter jeg flere quries i den samme?
Hejsa,
Dette spørgsmål er oprettet, da jeg ikke fik en løsning på mit gamle spørgsmål (der er en uge gammel). Mener der er tilladt at oprettet et nyt, hvis det gamle spørgsmål er 1 uge gammelt.
$query = mysql_query("SELECT brand.id FROM brand, series WHERE brand.status='1' AND brand.validation_status='1' AND series.brand_id=brand.id AND series.type='Reels' AND series.validation_status='1' AND exists(SELECT * FROM products WHERE series_id=series.id AND type='Reels' AND validation_status='1' AND exists(SELECT * FROM prices WHERE product_id=products.id) ) ORDER BY brand.name") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
- Men den kommer med denne fejl:
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 'exists(SELECT * FROM products WHERE series_id=series.
$query = mysql_query("SELECT brand.id FROM brand, series WHERE brand.status='1' AND brand.validation_status='1' AND series.brand_id=brand.id AND series.type='Reels' AND series.validation_status='1' AND exists(SELECT * FROM products WHERE series_id=series.id AND type='Reels' AND validation_status='1' AND exists(SELECT * FROM prices WHERE product_id=products.id) ) ORDER BY brand.brand") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
Har også prøvet følgene, men der sker intet (intet output, men heller ingen fejl):
$query = mysql_query("SELECT brand.id as brand_id,series.id as series_id,products.id as product_id FROM brands JOIN series,products,prices ON series.brand_id=brand.id,products.id=series.id,prices.product_id=products.id WHERE products.type='reels' ORDER BY brand.brand DESC") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2); SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id);
Can be rewritten as:
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL; "
Er det ikke allerede det jeg har prøvet på: $query = mysql_query("SELECT brand.id as brand_id,series.id as series_id,products.id as product_id FROM brands JOIN series,products,prices ON series.brand_id=brand.id,products.id=series.id,prices.product_id=products.id WHERE products.type='reels' ORDER BY brand.brand DESC") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
Jeg har opdelt den lidt (og rettet nogle få fejl):
$query = mysql_query("SELECT brand.id as brand_id,series.id as series_id,products.id as product_id FROM brand JOIN series,products,prices ON series.brand_id=brand.id,products.series_id=series.id,prices.product_id=products.id WHERE products.type='reels' ORDER BY brand.brand DESC") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
- Det ser ud til den går galt efter "ON series.brand_id=brand.id......... etc"
Får også denne fejl:
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 '.id WHERE products.type='reels' ORDER BY brand.brand DESC' at l
Dit forslag ser også mere overskueligt ud :) Ændrede det, men får stadig et undeligt output:
$query = mysql_query("SELECT brand.id as brand_id,series.id as series_id,products.id as product_id FROM ((brand JOIN series ON series.brand_id=brand.id) JOIN products ON products.series_id=series.id) JOIN prices ON prices.product_id=products.id WHERE products.type='reels' ORDER BY brand.brand DESC") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
- Prøver lige at kigge den igennem igen, kunne jo være jeg havde overset noget.
Kan sagtent flytte den sidste halvdel over i php gruppen, men er temmelig forvirret nu (det virker ikke logisk).
Jeg kan ændre tabellen (eller andet output) med php, men tabellen bliver stadig oprettet på det forkerte tidspunt (for hver series eller price i stedet for brand). Så det må da være en fejl i database forespørgslen, ik?
Jeg smed noget php på, så den ikke opretter den samme tabel to gange.
$query = mysql_query("SELECT brand.id as brand_id,brand.brand as brand_name,series.id as series_id,products.id as product_id FROM ((brand JOIN series ON series.brand_id=brand.id) JOIN products ON products.series_id=series.id) JOIN prices ON prices.product_id=products.id WHERE products.type='reels' AND brand.validation_status='1' AND series.type='Reels' AND series.validation_status='1' ORDER BY brand.brand ASC") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
- Men jeg får ikke nogen hastigheds forøgelse (bliver markant langsommere for hver pris der bliver tilføjet databasen). Er det ikke muligt at ændre forespørgslen, så while løkken kun køres igennem på brands og ikke på prices?
er der en der kan fortælle hvorfor denne query ikke virker:
$query = mysql_query("SELECT brand.id FROM brand, series WHERE brand.status='1' AND brand.validation_status='1' AND series.brand_id=brand.id AND series.type='Reels' AND series.validation_status='1' AND exists(SELECT * FROM products WHERE series_id=series.id AND type='Reels' AND validation_status='1' AND exists(SELECT * FROM prices WHERE product_id=products.id) ) ORDER BY brand.brand") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
- Den virker meget mere logisk og burde gøre det jeg søger. Er meget i tvivl om den anden overhovedet kommer til at virke (til det jeg skal anvende den til). Laver den ikke bare et output hvis alle JOIN er aktive?
Du skulle vel ikke vide hvor stabil 4.13 er? Overvejer næsten at opgradere for at løse problemet og så tage de bugs med der skulle komme (kan ikke se andre løsninger).
Mine kode: $query = mysql_query("SELECT brand.id FROM brand, series WHERE brand.status='1' AND brand.validation_status='1' AND series.brand_id=brand.id AND series.type='Reels' AND series.validation_status='1' AND exists(SELECT * FROM products WHERE series_id=series.id AND type='Reels' AND validation_status='1' AND exists(SELECT * FROM prices WHERE product_id=products.id) ) ORDER BY brand.brand") or die (mysql_error()); while($fetch = mysql_fetch_array($query)) {
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.