Insert into __ select..

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Elio vp

Elio vp

20/11/2010 14:49:00
Quote Anchor link
Hoi,

Ik ga ergens de fout in maar zie niet direct waar..

Als iemand een hint/duw kan geven richting de goede manier dan ben ik een tevreden mens :).


foutmelding:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO clients(username, password, fil, phone, email) SELECT '1', '2', id FROM fils WHERE fils.postalcode = '3', '4', '5'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 ' '4', '5'' at line 2


--> Ik heb een aantal dingen weggedaan met nr's omdat er gevoelige info in staat.

Mijn stukje code dat dit zou moeten doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$import = "INSERT INTO clients(username, password, fil_id, phone, email)
                        SELECT '$data[3]', '$data[4]', id FROM fils WHERE fils.postalcode = '$data[0]', '$data[1]', '$data[2]'";


Gegevens worden uit een .csv bestand geladen..

Kolom 1 uit de csv = postcode's
Kolom 2 uit de csv = telnr's
Kolom 3 uit de csv = emails
Kolom 4 uit de csv = usernamen
Kolom 5 uit de csv = paswoorden


Het gaat fout ergens om dat ik reeds een table heb in mysql waar alle postcodes in staan met elk hun uniek ID, en dat uniek ID wil ik in deze tabel krijgen..

Waarschijnlijk doe ik iets stoms ergens maar ik zie het niet direct..

Als iemand kan/wil helpen -> zeer geapprecieerd.


Vriendelijke Groeten!
Gewijzigd op 20/11/2010 14:50:20 door Elio vp
 
PHP hulp

PHP hulp

22/12/2024 12:09:39
 

20/11/2010 15:10:22
Quote Anchor link
Integers horen niet tussen quotes.
Leer sql: sql where.
 
Elio vp

Elio vp

20/11/2010 15:59:59
Quote Anchor link
Tja, het was te denken dat het iets stoms ging zijn..

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$import = "INSERT INTO clients(username, password, fil_id, phone, email)
                        SELECT '$data[3]', '$data[4]', 'id FROM fils WHERE fils.postalcode = $data[0]', '$data[1]', '$data[2]'";


Dit werkt gedeeltelijk, juist het feit dat hij de id's niet uit de fils tabel haalt maar er gewoon 0 input..

dus het deeltje "id FROM fils WHERE fils.postalcode = $data[0]" doet het niet..

Simpel gezegd is dit toch "Het ID van de tabel fils waar fils.postcode data0 is..

Dus in principe zou het moeten werken maar doet hij niet.. mmmmm

Alvast wederom bedankt voor je snelle reactie Karl :-)

Groeten!
 

20/11/2010 16:17:49
Quote Anchor link
Voor id heb je een quote staan, die hoort daar niet.
Heb je al opgezocht hoe je precies een where doet?
 
Elio vp

Elio vp

20/11/2010 16:40:57
Quote Anchor link
Jah hoor dat heb ik gedaan, wist ik eerder ook al, in een select query kan ik bijna alle mogelijke combinaties uitvoeren..

Maar in een insert lukt het me niet.. men verstand reikt zo ver niet denk ik..

Die quote die er staat was maar ff om te testen en te zien wat dat exact deed.. (niet veel dus :p)

Dank voor de reactie wederom :)
 

20/11/2010 16:48:34
Quote Anchor link
Elio vp op 20/11/2010 16:40:57:
Jah hoor dat heb ik gedaan, wist ik eerder ook al, in een select query kan ik bijna alle mogelijke combinaties uitvoeren..
(...)


Daar lijkt het niet op. Voer alleen maar eens die SELECT query uit.
 
Elio vp

Elio vp

20/11/2010 16:59:27
Quote Anchor link
Die werkt perfect,

als ik bijvoorbeeld gewoon

SELECT fils.id FROM fils WHERE fils.postalcode = 9000

Dan krijg ik netjes het kantoor ID terug..

Dus die werkt perfect
 

20/11/2010 17:06:24
Quote Anchor link
Want dat is ook een hele andere query dan de select query die je in je insert hebt.
 
Elio vp

Elio vp

20/11/2010 18:44:57
Quote Anchor link
Jah klopt eigenlijk wel, mijn select query is idd veel langer maar ik zou anders niet weten hoe ik die andere data vanuit die array kan inputten samen met die select query..

Als je daar ff mee kan helpen.. :-)

Hartelijk dank! en nogmaals bedankt voor jou reacties!!
 

20/11/2010 18:59:35
Quote Anchor link
De insert gaat rij voor rij. Dus de select gaat ook rij voor rij.
Waarom verschilt dan die select query van jou zoveel?
Kijk ook naar de where...
Die where kan sowieso nooit of te nimmer.
En dat ligt niet aan de insert, die geeft ook geen fout.
Mysql zegt toch dat de fout bij de where ligt.
 
Elio vp

Elio vp

20/11/2010 19:14:12
Quote Anchor link
Eerst gaf hij idd die fout aan..

Maar nadien gaf hij geen fout meer aan, maar hij voerde de where clausule niet uit..

Hij inputte gewoon telkens 0 in mijn fils_id kolom..

Als ik die select query uitvoer in phpmyadmin dan krijg ik netjes het result..

Het probleem ligt hem gewoon in de complete query, de insert & de select samen in 1 query krijg ik niet goed..

Ik ga nog wat verder knutselen..

Wederom bedankt!
 

20/11/2010 19:29:09
Quote Anchor link
Hoe was je query dan?
Als de query niet goed gaat, tijdens development gewoon echoën. Dan kan je zien wat er niet goed gaat.
 
Elio vp

Elio vp

20/11/2010 21:18:24
Quote Anchor link
Zal ff tonen wat ik heb van info.. dan is het voor jou ook duidelijker..


dit is dus het stukje code uit het script.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$import = "INSERT INTO clients(username, password, fil, phone, email)
                        SELECT '$data[3]', '$data[4]', (fils.id FROM fils WHERE fils.postalcode = $data[0]), '$data[1]', '$data[2]'";

Hier importeert hij netjes de username, password, phone & email.
Bij die fil krijg ik telkens een 0 waarde in mijn velden in mysql.


Dit krijg ik als ik echo..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO clients(username, password, fil, phone, email) SELECT 'user', 'pass', [b]'fils.id FROM fils WHERE fils.postalcode = 1020'[/b], 'telnr', 'email'

het gedeelte "fils.id FROM....= 1020", daar gaat het dus mis.. ik weet alleen niet hoe het op te lossen..


Dank!
Gewijzigd op 20/11/2010 21:19:20 door Elio vp
 

20/11/2010 21:24:25
Quote Anchor link
Kijk nou eens. Dat is toch geen normale SELECT query?
Je doet er nu alleen een INSERT boven omdat je dingen in een tabel wilt hebben. En toevallig heb je andere dingen al in een andere tabel zitten.

Zoals ik al zei, deze SELECT query is heeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeel anders dan die je hierboven plaatst (en waarvan je zei dat het dezelfde is.

Voer maar eens uit in phpmyadmin o.i.d.:
SELECT 'user', 'pass', 'fils.id FROM fils WHERE fils.postalcode = 1020', 'telnr', 'email'
En kijk er naar.
Dat klopt toch voor geen ene iota...
 
Elio vp

Elio vp

20/11/2010 21:25:51
Quote Anchor link
Dat weet ik karl dat dat niet klopt.. daarom vraag ik hier netjes hoe het wel moet...

:)

(Je moet daar niet boos om worden..)

Groeten en nogmaals bedankt voor de wederom snelle reactie :)
 

20/11/2010 21:31:59
Quote Anchor link
Jij zegt dat je alles snapt van SELECT queries, waarom zie je dan niet in dat deze SELECT query niet goed is?
Ga eerst zorgen dat je een normaal werkende SELECT query hebt voordat je die ene regel (INSERT INTO blaat(blabla, blup, blap)) d'r boven zet.
That's all.
 
Elio vp

Elio vp

20/11/2010 21:36:57
Quote Anchor link
Die select query perfect werkend is dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT fils.id FROM fils WHERE fils.postalcode = 9000


Die werkt perfect.. is exact hetgene ik nodig heb..

Hoe stom het ook klinkt.. ik krijg het niet voor elkaar om die twee "INSERT & SELECT" samen te voegen tot 1 goede query..

Verder heb ik hier queries gemaakt zoals deze
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT DISTINCT interventions.id, bikes.serialnr, statuses.status, FROM_UNIXTIME(UNIX_TIMESTAMP(interventionshistory.date)) AS datum
FROM interventions
INNER JOIN interventionshistory ON interventions.id = interventionshistory.intervention
INNER JOIN bikes ON interventions.bike = bikes.id
INNER JOIN statuses ON interventions.status = statuses.id
INNER JOIN fils ON interventions.fil = fils.id
WHERE fils.id = '38'
ORDER BY 'interventions.id'


En die doen het allemaal perfect(in feite doet dit er niet toe maar ik wil maar gewoon ff tonen dat dat me wel perfect lukt), al mijn SELECT queries..

maar ik zeg het.. ik krijg het niet goed om die 2 dingen samen te krijgen, en wss is het niet al te moeilijk..
 

20/11/2010 21:38:39
Quote Anchor link
Elio vp op 20/11/2010 21:36:57:
Die select query perfect werkend is dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT fils.id FROM fils WHERE fils.postalcode = 9000


Die werkt perfect.. is exact hetgene ik nodig heb.
(...)


En kijk nu eens naar wat je genereert.
 
Elio vp

Elio vp

20/11/2010 21:45:26
Quote Anchor link
Als je bedoelt met wat genereer ik met dat stuk query dat totaal niet werkt.. jah dan doet hij eigenlijk niks met dat stukje (SELECT fils.id FROM fils WHERE fils.postalcode =..)
Hij gaat daar gewoon over zonder er iets mee te doen..

Daarom net dat ik er zo mee in de knoop lig.. "Hoe moet ik dit doen zodat hij alle andere data die hij rechtstreeks uit die csv haalt direct input, maar juist dat ene veldje waar hij moet kijken naar het ID(fils.id) uit een andere table(fils), dus dat SELECT gedeelte.."

Goh en waarschijnlijk gaat dit zo belachelijk simpel zijn dat ik mij der een paar dagen slecht van ga voelen.. :(
 

20/11/2010 21:48:31
Quote Anchor link
Daarom zeg ik. Maak eens er een normale SELECT query van.
Of zie je niet dat het geen normale / goede / correcte SELECT query is?

SELECT 1,2,3, 'blaat', 'blup' -- Levert 1,2,3,blaat,blup
SELECT 1,2,3, 'blaat', 'blup', id FROM users -- Levert 1,2,3,blaat,blup,id-van-één-user
Gewijzigd op 20/11/2010 21:50:56 door
 
Elio vp

Elio vp

20/11/2010 21:57:11
Quote Anchor link
Jah dat is het hem net.. ik weet dat die SELECT query niet klopt.. en dat in dat SELECT gedeelte die variablen die voor fils.id komen dat die daar niet horen en die variablen na dat stukje ->
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"fils.id FROM fils WHERE fils.postalcode = $data[0]"
dat die daar waarschijnlijk ook niet horen.

Maar ik weet gewoon niet hoe ik ze er anders in moet krijgen..

En op deze manier zal het ook niet werken..
INSERT INTO clients(username, password, fil, phone, email) VALUES ($data[3]', '$data[4]', fils.id FROM fils WHERE fils.postalcode = $data[0], '$data[1]', '$data[2]');

Daarom, nogmaals, ik heb geen idee hoe ik het voor elkaar moet krijgen Karl.. :(
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.