MySQL / subquery
annA
- datenbank
Huhu :)
herjee.. es ist schon etwas her, dass ich mich mit MySQL beschäftigt habe und leider kann ich in der Doku auch nichts zu meinem Problem finden.
Folgendes SQL-Query habe ich:
INSERT address\_book
SET customers_id = '1260',
entry_country_id = (
SELECT DISTINCT countries_id
FROM countries
WHERE countries_name = 'Austria'
);
Und das ist der Fehler:
#1064 - You have an error in your SQL syntax.
da ich kein Beispiel für INSERTs und SUBQUERIES gefunde habe: kann das MySql nicht? (Version 3.2)
Liege ich richtig? Lässt es sich über SQL anders lösen?
Mit Gruß und all dem
annA
Hi,
INSERT
address\_book
SET customers_id = '1260',
entry_country_id = (
SELECT DISTINCT countries_id
FROM countries
WHERE countries_name = 'Austria'
);
ich habe sowas mal so lösen können:
INSERT
address_book
(
customers_id,
entry_country_id
)
VALUES
(
'1260'
SELECT ...
)
http://dev.mysql.com/doc/refman/5.0/en/insert.html
Rodo
sorry...
INSERT
address_book
(
customers_id,
entry_country_id
)
VALUES
(
'1260',
(
SELECT
...
)
)
Hi Rodo
funktioniert leider genauso wenig, gleicher Fehler. liegt vielleicht an der Version.. ( einzeln bzw mit "hart codierter" countries_id funktionierts)
trotzdem danke schön! muss ich mir wohl was anderes ausdenken
annA
hi,
und leider kann ich in der Doku auch nichts zu meinem Problem finden.
Liegt das problem vielleicht darin, dass Finden idR. Suchen voraussetzt?
da ich kein Beispiel für INSERTs und SUBQUERIES gefunde habe: kann das MySql nicht? (Version 3.2)
RTFMchen:
MySQL Reference Manual, HTML, viewable online, 3.23, 4.0, 4.1
[strg]+[f], [s][u][b][q][u][e][r][y][enter]
gruß,
wahsaga
ach, es ist wie immer herrlich hier!
voll von freundlichkeit und so.
danke für die überaus hilfreiche hilfe
diese seite hatte ich bereits gefunden (stand auch schon in meinem post. falls du nachhilfe im lesen brauchst, gebe ich dir gerne)
hi,
diese seite hatte ich bereits gefunden (stand auch schon in meinem post. falls du nachhilfe im lesen brauchst, gebe ich dir gerne)
Lüg doch bitte nicht so dreist.
In deinem Eingangspost hast du behauptet, du hättest bzgl. Subqueries in der Doku "nichts gefunden".
Zitate:
[...]leider kann ich in der Doku auch nichts zu meinem Problem finden.
da ich kein Beispiel für INSERTs und SUBQUERIES gefunde habe [...]
gruß,
wahsaga
Hallo wahsaga,
auf dieser Seite http://dev.mysql.com/doc/refman/4.1/en/subqueries.html habe ich im Dokumentationsteil kein Beispiel für inserts gefunden.
aber schon gut. Ihr seid mich ja schon wieder los.
Die Stimmung hier hat sich kein bisschen verbessert. Finde ich sehr schade. Aber diese Diskussion ist ja nicht neu und braucht auch nicht aufgewärmt werden, es gibt ja noch andere Foren :)
Trotzdem noch einen schönen
das annA
Yo!
diese seite hatte ich bereits gefunden (stand auch schon in meinem post. falls du nachhilfe im lesen brauchst, gebe ich dir gerne)
Lüg doch bitte nicht so dreist.
In deinem Eingangspost hast du behauptet, du hättest bzgl. Subqueries in der Doku "nichts gefunden".
Zitate:
[...]leider kann ich in der Doku auch nichts zu meinem Problem finden.
da ich kein Beispiel für INSERTs und SUBQUERIES gefunde habe [...]
es ging wohl um Deinen Webverweis http://dev.mysql.com/doc/refman/4.1/en/. Den hatte annA anscheinend schon gefunden. Viel mehr gibt es da IMHO nicht zu schreiben. Also hör endlich auf zu gnollen.
LG
Rodo
Hi,
und leider kann ich in der Doku auch nichts zu meinem Problem finden.
Liegt das problem vielleicht darin, dass Finden idR. Suchen voraussetzt?
das stimmt ja nicht ganz. Nette Damen finden manchmal auch ohne zu suchen.
Rodo
echo $begrüßung;
herjee.. es ist schon etwas her, dass ich mich mit MySQL beschäftigt habe und leider kann ich in der Doku auch nichts zu meinem Problem finden.
INSERTaddress\_book
[...]
SELECT DISTINCT countries_id
[...]
#1064 - You have an error in your SQL syntax.
Du hast ein Problem mit der Syntax eines INSERT-Statements. Man nehme ein MySQL-Handbuch. Am besten das zur verwendeten Version passende, obwohl meist auch in den nachfolgenden Hinweise stehen, ab welcher Version etwas bestimmtes geht. Dort gibt es das Kapitel SQL Statement Syntax. Weiter geht es zur INSERT Syntax. Und dort gibt es sogar ein eigenes Kapitel zur INSERT ... SELECT Syntax mit Anwendungsbeispiel.
da ich kein Beispiel für INSERTs und SUBQUERIES gefunde habe: kann das MySql nicht? (Version 3.2)
Subquerys kann MySQL erst ab Version 4.1. Aber INSERT ... SELECT geht schon recht lange.
echo "$verabschiedung $name";
Hi,
nur mal interessehalber, so gehts bei MS SQL Server:
INSERT
address_book
(
customers_id,
entry_country_id
)
VALUES
(
'1260',
(
SELECT
...
)
)
Wie geht das bei MySQL (in einer Version, die das kann)?
Anmerkung: Wir wollen _nur einen Datenfeldwert_ aus einer anderen Tabelle holen, die anderen sind Konstanten.
Rodo
echo $begrüßung;
Wie geht das bei MySQL (in einer Version, die das kann)?
Anmerkung: Wir wollen _nur einen Datenfeldwert_ aus einer anderen Tabelle holen, die anderen sind Konstanten.
The Subquery as Scalar Operand
Das Statement vom OP
INSERT address\_book
SET customers_id = '1260',
entry_country_id = (
SELECT DISTINCT countries_id
FROM countries
WHERE countries_name = 'Austria'
);
lässt sich ohne Subselect so schreiben:
INSERT address_book (customers_id, entry_country_id)
SELECT 1260, countries_id
FROM countries
WHERE countries_name = '';
Wobei mir nicht klar ist, was das DISTINCT bewirken soll (wobei mir die generelle Funktionsweise von DISTINCT schon klar ist). Wenn es mehrere unterschiedliche countries_id zu Austria gibt, gibt es mehr als einen Datensatz im Ergebnis. Wenn es mehrere Austria mit der gleichen countries_id gibt, dann vermute ich einen Fehler im Tabellendesign.
echo "$verabschiedung $name";
Hi,
Wobei mir nicht klar ist, was das DISTINCT bewirken soll (wobei mir die generelle Funktionsweise von DISTINCT schon klar ist).
danke! Ich habe jetzt auch ein wenig weitergelesen und mein Vorschlag sollte mit einer neueren Version von MySQL ebenfalls funktionieren.
Wenn es mehrere unterschiedliche countries_id zu Austria gibt, gibt es mehr als einen Datensatz im Ergebnis. Wenn es mehrere Austria mit der gleichen countries_id gibt, dann vermute ich einen Fehler im Tabellendesign.
Weil es mehrere Datensätze mit derselben ID gibt. :-)
BTW - es gibt kaum sinnvolle Einsatzmöglichkeiten für DISTINCT. Im Moment fällt mir zumindest nichts ein.
Rodo
danke an alle Helfer, dann hatte ich ja recht. schön :)
schönen tag euch noch
das annA
pah. Du nutzt meinen Namen + meine Schreibweise.
Frechheit!
;o)
viel erfolg noch beim MySQLen und nicht ägern lassen :o)
bis dann dann
annA ;o)
Hi,
pah. Du nutzt meinen Namen + meine Schreibweise.
Frechheit!
das erklärt einiges. :-)
Rodo