Autor Zpráva
doom
Profil *
Dobrý den, mám problém s výpisem s napojením na druhou tabulku. Všechno funguje, ale jen jedna věc mě trápí a to, že ignoruje date DESC. Ví někdo kde dělám chybu? Děkuju

WHERE id_product IN (SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY date DESC) ORDER BY date_end ASC";
Joker
Profil
doom:
Protože "date" je vyhrazené slovo. V první řadě není úplně vhodné vyhrazená slova vůbec používat pro názvy sloupců, ale jestli už to tak je, zkuste:
… ORDER BY `date` …

edit:
Seznam rezervovaných slov se dá najít v manuálu (pro MySQL, vpravo lze přepnout verzi, pro ostatní databáze v jejich manuálech)
doom
Profil *
To nefunguje pořád na to prdí :-(
Joker
Profil
doom:
Aha, koukám na to pořádně a on ten SQL dotaz vlastně nedává smysl.
Proč vlastně chcete řadit data v poddotazu, který se použije jen ve WHERE podmínce? Tam přece nezáleží na tom, jak je to seřazené, jen na tom, jestli to id_product v tom výběru je nebo není.

Co to má dělat?
doom
Profil *
Má vypsat produkty, které jsou posledně přihozené v objednávce :-)
__construct
Profil
Ano ale Joker Ti chcel povedať, že celý ten dotaz je nejaký divný - Máš tam:
Vyber niečo od niekiaľ ak je produkt v tomto zozname (8,1,3,56,98) a zoraď ich podľa dátumu

Tomu dotaz je jedno v akom poradí sú tie produkty v zátvorke .. jedine, že by si tam zabudol LIMIT ..
doom
Profil *
Jinak napsáno: seřazuje podle seznamu id zasebou a ne všechno ostatní hází bobek, ale když to nejde udělat pomocí INT, tak čím?
__construct
Profil
Skús toto:
(SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY `order`.`date` DESC)

Mám taký dojem, že pokiaľ nezadefinuješ do dotazu z ktorej je to tabuľky tak on zoraďuje ako by ten stĺpec bol string a nie dátum ..
doom
Profil *
To je bohužel taky bez efektu. Chyba žádná, ale na řazení prdí.
nightfish
Profil
doom:
ukaž celý ten dotaz (tedy i část před prvním WHERE v [#1])
doom
Profil *
$query = "SELECT date_format(date_end, '$date_server') AS top_date,id_product,id_user,id_category,name_ebay,price,bid,description,specific_product,focus_product,producer,date_end,insert_ebay FROM 
drazba WHERE date_end > '$date' AND id_product IN (SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY order`.`date` DESC) ORDER BY date_end ASC";
Kajman_
Profil *
Order by v tomto poddotaze přece nemůže nic ovlivnit. Všechny varianty omezí výběr stejně a na zaření výsledku nemají vliv!

id_product IN (SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY `order`.`date` DESC)
id_product IN (SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY `order`.`date` ASC)
id_product IN (SELECT DISTINCT product FROM order WHERE price > '0')
__construct
Profil
Chýba Ti tam jedna úvodzovka:
SELECT
date_format(date_end, '$date_server') AS top_date,
id_product,
id_user,
id_category,
name_ebay,
price,
bid,
description,
specific_product,
focus_product,
producer,
date_end,
insert_ebay
FROM drazba
WHERE date_end > '$date'
AND id_product IN (
SELECT DISTINCT product FROM order WHERE price > '0' ORDER BY `order`.`date` DESC)
ORDER BY date_end ASC;
nightfish
Profil
doom:
Má vypsat produkty, které jsou posledně přihozené v objednávce :-)
dotaz tak, jak je koncipován, vybere položky z tabulky `drazba`, jejichž ID odpovídají všem ID u tabulky `order` s kladnou cenou, a všechny takto vybrané položky seřadí vzestupně podle `date_end`

takže zkus popsat trochu lépe, co chceš vybrat a jak to chceš seřadit, třeba vymyslíme, jak by se to dalo propašovat do SQL dotazu
doom
Profil *
Řadit se ma odposlední přihozené ceny. Nic víc ani mín, ale je to větší problém než jsem si myslel.
nightfish
Profil
doom:
Řadit se ma odposlední přihozené ceny. Nic víc ani mín
A poslední přihozená cena se vezme ve kterém sloupci které tabulky? Když nic víc, tak proč tam máš ORDER BY `date_end` ASC?
doom
Profil *
Zapoměl jsem na řazení podle datumu ukončení. Cena se bere s tabulky order
nightfish
Profil
možná by mohlo fungovat toto
AND id_product IN (SELECT product FROM order GROUP BY product HAVING MAX(price) > 0)
doom
Profil *
Hmm, tak na tohle taky nezabral.
Moderátor nightfish: Příště zkus nepoužít tři písmenka "m" těsně za sebou, neboť se na tomto fóru jedná o přivolávač moderátorů.
__construct
Profil
Jak napísal Kajman [#12] tade cesta nevedie ..
Možno niečo takéto ..
SELECT
date_format(date_end, '$date_server') AS top_date,
id_product,
id_user,
id_category,
name_ebay,
price,
bid,
description,
specific_product,
focus_product,
producer,
date_end,
insert_ebay
FROM drazba
WHERE date_end > '$date'
AND id_product IN (
SELECT product FROM order GROUP BY product HAVING MAX(price) > 0) -- tento select netreba nijak zoraďovať
ORDER BY datum_poledne_prihodenie DESC, date_end ASC;
doom
Profil *
nightfish: se omlouvám, ale nevěděl jsem to.
construct: B´bohužel ani tohle nefunguje. Kombinuju to se všema nápadama co už tady protekli, ale ani kombinace nefunguje
doom
Profil *
cesta pomocí IN asi neni. Nedá se to vyvolat i jinak nez pomoci IN?
nightfish
Profil
doom:
Nedá se to vyvolat i jinak nez pomoci IN?
Možná ano. Ale vytrvale se bráníš našim snahám vypáčit z tebe, co všechno má ten dotaz udělat. Jak tak nad tím přemýšlím, možná by ještě pomohla ukázka konkrétních dat + výsledku, který z nich požaduješ.
doom
Profil *
já se ničemu nebránim, ale vážně jsem napsal co všechno po tom dotazu chci. Víc k tomu vážně dodat nejde.
nightfish
Profil
doom:
dovolil jsem si shromáždit z tohoto vlákna všechny tvé příspěvky, ve kterých popisuješ, co chceš aby to dělalo
Má vypsat produkty, které jsou posledně přihozené v objednávce :-)
Řadit se ma odposlední přihozené ceny.
Zapoměl jsem na řazení podle datumu ukončení. Cena se bere s tabulky order

Pokud je někomu jinému jasné, co že to vlastně chceš, tak ho nechám vyniknout. Mně to jasné není.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0