Ik heb geen idee hoe je dit zou moeten doen:

INSERT INTO table1 name,rang VALUES ('naam',hier de andere query)

Ik wil dus een nieuwe rij toevoegen, maar bij rang moet de hoogste waarde van kolom 'rang' van table1 +1 komen te staan. Is dit mogelijk :S ?
Zoiets?


INSERT INTO table1 (naam,rang) VALUES ('".$naam."', (SELECT max(rang) FROM table1)+1)


Volgens mij kan dit zo niet.
Heb je phpmyadmin?

Daarin kan je een query draaien en zie je gelijk of ie gelukt is.
Ik krijg dan deze error:

You can't specify target table 'table1' for update in FROM clause
Er staat mij bij dat je in MySQL geen subquery kunt uitvoeren in een INSERT-query die dezelfde tabel gebruikt.

Momentje, zoek even de gegevens erbij!

Edit: Yapf.net heeft het over iets soortgelijks.

Gevonden:
Another restriction is that currently you cannot modify a table and select from the same table in a subquery.

Zie de handleiding. Wat jij wilt, kan dus niet in MySQL.

Het is toch zo'n geweldig product...
Haha, inderdaad :P geweldig product. Maar dat los ik dan maar op met 2 queries.
Bedankt voor het antwoord!
En nu heb ik er nog één. (hoef ik waarschijnlijk geen nieuw onderwerp voor te maken).


SELECT  DISTINCT(naam), prijs  FROM verzendkosten WHERE verzendkosten.aangepast='false' AND verzendkosten.gewicht>$gewicht;


Nu werkt die DISTINCT niet zoals ik het wil hebben. Als ik prijs weglaat doet ie het wel, laat ik prijs staan dan krijg ik gewoon alle resultaten.
Zover ik weet moet je prijd en naam bij elkaar zetten. Dus zo:

SELECT DISTINCT(naam, prijs) FROM verzendkosten WHERE verzendkosten.aangepast='false' AND verzendkosten.gewicht>$gewicht;
Dan krijg ik deze melding:

Operand should contain 1 column(s)

Lijkt me dus niet.
Je kan gewoon SELECT bij INSERT doen:

INSERT INTO `tabel1` (`veld1`,`veld2`) SELECT `waarde1`,`waarde2` FROM `tabel2`

Ik praat hier over MySQL

Reageren