I've got a very simple Workflow with a query action which stores field values in variables, then sends an alert using these variables. The Workflow is only sending alerts for the one item and I don't know why. Any help appreciated.
A variable is only capable of storing a single value. If you are querying a list expecting to return multiple results then you need to store these results in a collection (the Nintex equivalent of an array in programming).
Currently your workflow will only return a single result (the first one and send an email with the variables returned for that item. See below for how your workflow needs to look.
You then have 2 options.
1 - Single email for all items - For this you will need to use a Build String action in your loop to build an HTML table and place your variable values in that table and then after your loop you can send an email and include your HTML table in it.
2 - Send an email for each item - Here, simply place your email action inside the loop and place the variables retrieved in the email. So if your initial query returns 100 items, this will send 100 emails. One with the details of each item in the content of the email.